Django framework: получить значение из django.db.models.fields.IntegerField
Как получить значение из класса django.db.models.fields.IntegerField? Я хочу получить 1 из поля admin. Это python код: класс модели и функция view
from django.db import models
from django.db import connection
import pymysql
# Create your models here.
class Users(models.Model):
def __init__(self,*args, **kwargs):
super().__init__(*args, **kwargs)
self.firstname=models.CharField(max_length=100)
self.lastname=models.CharField(max_length=100)
self.username=models.CharField(max_length=50)
self.password=models.CharField(max_length=255)
self.admin=models.IntegerField()
self.createdAt=models.DateTimeField(db_column="created_at")
def getAdmin(self):
return self.admin
class Meta:
db_table = 'users'
Функция представления, когда я запускаю user = Users.objects.get(id=userId)
def home(request):
#controllo se sei loggato
if request.session.has_key('loggedin'):
if request.session['loggedin'] != True:
return redirect("login")
else:
return redirect("login")
#l'utente è loggato recupero le informazioni
userId = int(request.session['id'])
user = Users.objects.get(id=userId)
print(type(user))
print(type(user.getAdmin()))
tmplVar = {}
tmplVar["admin"] = user.admin
return render(request, 'pygiustizia/home.html',{'tmplVar': tmplVar})
вы печатаете тип, а не значение
print(type(user))
print(type(user.getAdmin()))
если вы попробуете что-то вроде:
print(user)
print(user.admin)
вы должны получить что-то на заметку:
>> <object>
>> 1
без переопределения __repr__
или __str__
Я запутался.
Я закомментировал super
и __init__
и он работает. Почему в первый раз нет?
from django.db import models
from django.db import connection
import pymysql
# Create your models here.
class Users(models.Model):
firstname=models.CharField(max_length=100)
lastname=models.CharField(max_length=100)
username=models.CharField(max_length=50)
password=models.CharField(max_length=255)
admin=models.IntegerField()
createdAt=models.DateTimeField(db_column="created_at")
def getAdmin(self):
return self.admin
Я хочу инициализировать все поля колонок в init.
Предполагаю, что вам нужно значение admin. Насколько я понимаю, вы можете использовать метод filter на вашем объекте внутри вашей модели Users
. Поскольку вы инциализировали поля модели внутри метода __init__
, что, я уверен, не является хорошей практикой, но, основываясь на вашем требовании, вы можете сделать следующее:
from django.db import models
# Create your models here.
class Users(models.Model):
def __init__(self,*args, **kwargs):
super().__init__(*args, **kwargs)
self.firstname=models.CharField(max_length=100)
self.lastname=models.CharField(max_length=100)
self.username=models.CharField(max_length=50)
self.password=models.CharField(max_length=255)
self.admin=models.IntegerField()
self.createdAt=models.DateTimeField(db_column="created_at")
def getAdmin(self):
return self.objects.get(admin=self.admin)
class Meta:
db_table = 'users'
Тогда вы можете заменить вашу строку user = Users.objects.get(id=userId)
на
user = User(userId)
Надеюсь, это то, что вы ищете!