这是一个非常直截了当的问题:
我有两个模型,每个模型都有一个DateField。我想根据Model-B中的日期查询Model-A。我想要一个返回Model-A的所有对象的查询,这些对象的日期在2年内,加上或减去Model-B的一个对象中的日期。怎么办呢?
答案 0 :(得分:1)
假设您有一个来自模型B
的日期值,请计算两个日期:一年 - 过去2年,另一个 - 未来2年 - python-dateutil
模块的帮助(部分来自here)。然后,使用__range
表示法按日期范围过滤掉A
条记录:
from dateutil.relativedelta import relativedelta
def yearsago(from_date, years):
return from_date - relativedelta(years=years)
b_date = b.my_date
date_min, date_max = yearsago(b_date, 2), yearsago(b_date, -2)
data = A.objects.filter(my_date__range=(date_min, date_max))
其中b
是B
模型实例。
另见:Django database query: How to filter objects by date range?
希望有所帮助。