django中的日期查询

时间:2012-10-23 09:55:43

标签: python django django-queryset

我有一个带有两个日期字段的模型,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相隔一个月就会失败。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

答案 1 :(得分:-1)

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

这就是你所需要的一切