![](/img/trans.png)
[英]How to calculate user age from birth year till registration date using Django ORM
[英]how to extract year in date field of date of birth and calculate age of person in django views.py?
我正在尝试在 views.py 中执行此操作
ExtractYear(date_of_birth) - today.year
但是使用int会出错,我尝试过:
int (ExtractYear(date_of_birth) )- int(today.year)
并且它给出了 int() 参数的错误必须是一个字符串,一个类似字节的 object 或一个数字,而不是“ExtractYear”
如果我尝试这样做:
date_of_birth_year - today.year
它给出了名称“date_of_birth_year”的错误未定义
我也做了:
import datetime
我只是想在 integer 中找到人的年龄,我不知道如何在日期字段或日期时间字段中提取年份、小时等内容,请提供帮助。
一个人的年龄不仅仅取决于年份。 例如,如果一个人在二月一日出生,那么一月一日,他/她比三月一日小一岁。
您可以使用以下方式注释您的人:
from django.db.models.functions import ExtractYear
MyModel.objects.annotate(
date_of_birth_year=ExtractYear('date_of_birth_year')
)
从此查询集产生的MyModel
将有一个额外的属性.date_of_birth_year
包含date_of_birth
的年份。 您还可以注释包含此人“年龄”的字段age
:
from django.db.models.functions import ExtractYear
from django.utils.timezone import now
MyModel.objects.annotate(
age=now().year - ExtractYear('date_of_birth_year')
)
但因此这个年龄并不完全正确。
另一种可能的解决方案可能是:
from django.db.models import F, ExpressionWrapper
from django.db.models.functions import Now
Model.objects.annotate(
delta = ExpressionWrapper( Now() - F('date_of_birth'), output_field=models.DateTimeField()
)
)
然后, instance.delta
将是datetime.timedelta(..)
实例,进一步处理需要一点数学。 此外,Django doc 也有类似的示例, 请查看
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.