0

我有一个带有两个日期字段 start_date 和 end_date 的模型

我希望查询此模型以获取介于两个给定日期之间的所有模型实例。我还希望模型与此范围重叠。

这两个给定日期是一个月的开始日期和结束日期。

我试过做类似的事情:

Model.objects.filter(Q(start_date__range=[start_range, end_range])|Q(end_date__range=[start_range, end_range])) 

但是,如果 start_date 和 end_date 相隔超过一个月,则此操作失败。

4

2 回答 2

0

这是怎么失败的?不返回范围优于一个月的对象?

我不明白为什么你的方法不起作用,但你总是可以尝试使用:

Model.objects.filter(Q(start_date__gt=start_range)|Q(end_date__lt=end_range))

只要 start_date 低于 end_date 就可以工作,但这应该在表单验证中处理。

另一个想法,但在数据库查询方面可能效率不高,是过滤根本不在范围内的对象。从逻辑的角度来看,这似乎更有效,但同样,可能不是在数据大小和数据库查询方面。

于 2012-10-23T10:09:40.193 回答
-1
Model.objects.filter(start_date__gt=start_range).filter(end_date__lt=end_range)

这就是你所需要的

于 2012-10-23T10:07:20.643 回答