美文网首页
Django 由出生日期查询年龄

Django 由出生日期查询年龄

作者: alue | 来源:发表于2023-07-03 08:59 被阅读0次

    有人员模型如下:

    class Person(models.Model):
        name = models.CharField(max_length=16, verbose_name='姓名')
        birthday = models.DateField(verbose_name='出生日期')
    

    目标是高效的返回每个人员的年龄.

    入门的方法是获取Queryset后,循环计算年龄, 效率较低.

    好的方法是利用数据库提供的函数来计算年龄,例如PostgreSQL 提供了AGE函数, 可以这样使用:

    from django.db.models import Func
    class Age(Func):
        function = 'AGE'
        template = "EXTRACT(YEAR FROM (%(function)s(current_date,%(expressions)s)))"
    
    Person.objects.annotate(age=Age('birthday')).values('id', 'name',  'age')
    

    这里使用了 Django 的 Func API, 利用 template 属性来提取age中的年份来作为年龄.

    相关文章

      网友评论

          本文标题:Django 由出生日期查询年龄

          本文链接:https://www.haomeiwen.com/subject/jtyqudtx.html