我有一个带有两个日期字段的模型,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相隔一个月就会失败。
答案 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)
这就是你所需要的一切