在Django应用中显示出生日期



如何从DOB获得年龄?有任何建议吗?

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

您应该使用python-dateutil在日期之间获得relativedelta

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)

从这里取出的出生日期,您可以将此功能放在模型上。您无需将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

最新更新