查询范围为2年的DateField

时间:2014-05-08 21:42:55

标签: python django django-models

这是一个非常直截了当的问题:

我有两个模型,每个模型都有一个DateField。我想根据Model-B中的日期查询Model-A。我想要一个返回Model-A的所有对象的查询,这些对象的日期在2年内,加上或减去Model-B的一个对象中的日期。怎么办呢?

1 个答案:

答案 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))

其中bB模型实例。

另见:Django database query: How to filter objects by date range?

希望有所帮助。