在Django应用中显示出生日期
如何根据出生日期显示年龄?有什么建议吗?
models.py
from django.db import models
import datetime
dob = models.DateField(max_length=8)
age = models.IntegerField()
def __str__(self):
today = date.today()
age = today.year - dob.year
if today.month < dob.month or today.month == dob.month and today.day < dob.day:
age -= 1
return self.age
谢谢,
Rads
2 个回答
1
根据这里提到的生日计算方法,你可以把这个功能放在你的模型里。这样你就不需要在数据库里存储age
(年龄)这个信息了。
from datetime import date
from django.db import models
class Person(models.Model):
dob = models.DateField()
def calculate_age(self):
today = date.today()
try:
birthday = self.dob.replace(year=today.year)
# raised when birth date is February 29 and the current year is not a leap year
except ValueError:
birthday = self.dob.replace(year=today.year, day=born.day-1)
if birthday > today:
return today.year - born.year - 1
else:
return today.year - born.year
8
你应该使用 python-dateutil 这个库来计算两个日期之间的相对差值:
from dateutil.relativedelta import relativedelta
from django.db import models
dob = models.DateField(max_length=8)
age = models.IntegerField()
def __str__(self):
today = date.today()
delta = relativedelta(today, self.dob)
return str(delta.years)