簡體   English   中英

如何計算年齡是否在出生年份的范圍內,同時從 Django ORM 中的 Db 獲取出生年份

[英]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 的范圍。

任何幫助。

你可能想使用relativedeltadateutil ,它更方便地計算時間:

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 年前。

對於ltegte請查看django doc以了解詳細信息。

編輯

實際上,django orm 支持range查詢,所以只需執行以下操作:

Employees.objects.filter(birth_year__range=[age_36, age_25])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM