在Django应用中显示出生日期

4 投票
2 回答
16512 浏览
提问于 2025-04-17 21:01

如何根据出生日期显示年龄?有什么建议吗?

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)

撰写回答