首页 > 解决方案 > 如何从 django 的 datefield 获取年份?

问题描述

我想从生日算起一年。所以我使用 self.birthday.year 但它会出错。我如何解决它?

此致。

class User(AbstractUser):

# First Name and Last Name do not cover name patterns
# around the globe.

name = models.CharField(_("Name of User"), blank=True, max_length=255) #이름
gender = models.CharField(max_length=1, choices=CHOICES_GENDER) # 성
birthday = models.DateField(null=True) #생일

def calculate_age(self):
    import datetime
    return int((datetime.date.year - self.birthday.year) +1)

 age = property(calculate_age) #나이

标签: pythondjango

解决方案


试试这个解决方案,

from datetime import date


class User(AbstractUser):
    name = models.CharField(_("Name of User"), blank=True, max_length=255)
    gender = models.CharField(max_length=1, choices=CHOICES_GENDER)
    birthday = models.DateField(null=True)

    @property
    def calculate_age(self):
        if self.birthday:
            today = date.today()
            return today.year - self.birthday.year - ((today.month, today.day) < (self.birthday.month, self.birthday.day))
        return 0  # when "self.birthday" is "NULL"

推荐阅读