![](/img/trans.png)
[英]How to calculate user age from birth year till registration date using Django ORM
[英]How to calculate if age is in range from the birth year ,while fetching the birth year from Db in Django ORM
我有一個由 id、姓名和出生年份組成的模型。我想查詢這個模型以獲取年齡在一個范圍內的名字。
現在,我嘗試過的是
queryset= Employees.objects.all()
對於每個名字,我計算年齡:
now = datetime.datetime.now()
age=now.year-q.birth_year
ids=[]
if 25<age<36 :
ids.append(q.id)
然后,我再次查詢 ids Employees.objects.filter(id__in=ids)
我可以在一個查詢中完成所有這些嗎?
Employees.objects.filter(**Calculate age and compare if it is in the range)
范圍可以是動態的。 我有兩個變量 minAge 和 maxAge 的范圍。
任何幫助。
你可能想使用relativedelta
從dateutil
,它更方便地計算時間:
import datetime
from dateutil.relativedelta import relativedelta
today = datetime.date.today()
age_25 = (today - relativedelta(years=25)).year
age_36 = (today - relativedelta(years=36)).year
Employees.objects.filter(birth_year__lte=age_25, birth_year__gte=36)
age_25
是 25 年前, age_36
是 36 年前,你只是查詢人們的生日在 25 到 36 年前。
對於lte
和gte
請查看django doc以了解詳細信息。
編輯:
實際上,django orm 支持range
查詢,所以只需執行以下操作:
Employees.objects.filter(birth_year__range=[age_36, age_25])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.