django“用户"对象没有属性“用户" [英] django 'User' object has no attribute 'user'

查看:81
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆