django“用户"对象没有属性“用户" [英] django 'User' object has no attribute 'user'
本文介绍了django“用户"对象没有属性“用户"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的模型中,我有一个课程
In my model I have a class
class User(AbstractDateTime, AbstractBaseUser, PermissionsMixin, models.Model):
email = models.EmailField(max_length=255, unique=True,blank=False,default='')
first_name = models.CharField(max_length=255, blank=False,default='')
last_name = models.CharField(max_length=255, blank=False,default='')
merchant_id = models.CharField(max_length=255, blank=True,default='')
customer_id = models.CharField(max_length=255, blank=True,default='')
phone_number = models.CharField(max_length=255,blank=False,default='')
zip_code = models.CharField(max_length=10,blank=False,default='')
photo = models.FileField(upload_to='images/users', default=None, blank=True, null=True)
STATUS_TYPES = (('admin', 'admin'),('client', 'client'))
role = models.CharField(max_length=10,choices=STATUS_TYPES,default='client')
reset_key = models.CharField(max_length=255, blank=True,default='')
credits = models.DecimalField(max_digits=5, decimal_places=2,default=0)
is_staff = models.BooleanField(default=0)
is_active = models.BooleanField(default=1)
objects = AuthUserManager()
USERNAME_FIELD = 'email'
def last_seen(self):
return cache.get('seen_%s' % self.user.email)
def online(self):
if self.last_seen():
now = datetime.datetime.now()
if now > self.last_seen() + datetime.timedelta(
seconds=settings.USER_ONLINE_TIMEOUT):
return False
else:
return True
else:
return False
def get_full_name(self):
full_name = '%s %s' % (self.first_name, self.last_name)
return full_name.strip()
def get_short_name(self):
return self.first_name
def __unicode__(self):
return unicode(self.email) or 'not found'
class Meta:
ordering = ["id"]
db_table = "user"
get_latest_by = "created"
当我打算调用我的模型的在线方法
when in view i tring to call online method of my model
users = User.objects.filter()
for user in users:
user.online()
我得到这个错误'用户'对象没有属性'用户'
i get this error 'User' object has no attribute 'user'
推荐答案
您的函数 last_seen
有一个错误.您正在执行 self.user.email
,这是不正确的,应该是 self.email
.
Your function last_seen
has a bug. You were doing self.user.email
which is incorrect, it should be self.email
.
此外,执行 User.objects.filter()
也不是一个好习惯,因为 filter
用于执行条件类似sql WHERE 的查询代码>.如果需要所有结果,请执行
User.objects.all()
.
Also, it's not good practice to do User.objects.filter()
, because filter
is used for doing lookup with conditions like sql WHERE
. If you want all results, do User.objects.all()
.
这篇关于django“用户"对象没有属性“用户"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文