Django-'NoneType'对象没有属性'year'

时间:2019-11-28 22:23:58

标签: django

因此,每当我尝试查看某人的个人资料而未输入出生日期时,都会收到此错误'NoneType' object has no attribute 'year'。我关注了这篇文章,将生日/年龄添加到了用户个人资料中,因此没有理由包括我的代码,因为我是从这里https://stackoverflow.com/a/39761072/12229283获得的。

我尝试向模型中添加default,但这似乎不起作用,我该如何做呢?因此,如果用户不输入生日,就跳过它并忽略它吧?谢谢

2 个答案:

答案 0 :(得分:1)

您需要在age方法中向返回语句添加一个if / else。

如果date_of_birth没有值(即设置为None),则在调用dob.year时会收到该错误,其中dob = date_of_birth = None。

class Profile(models.Model):
    date_of_birth = models.DateField()

    def age(self):
        import datetime
        if self.date_of_birth:
            dob = self.date_of_birth
            tod = datetime.date.today()
            my_age = (tod.year - dob.year) - int((tod.month, tod.day) < (dob.month, dob.day))
            return my_age
        else:
            return ''

答案 1 :(得分:0)

Django 升级到 3.2.4 后,我在 admin>LogEntry 中遇到了这个问题。问题在于使用 date_hierarchy