`project = Project.objects.filter(
Q(startDate__range=(startDate, endDate))|
Q(endDate__range=(startDate, endDate)),
**ProjectParam
).order_by(const.START_TIME_PROPERTY)`
我想获取参数日期范围之间的所有项目。但是,这是我面临的一个问题,例如,如果我请求获取开始日期为jan-1和结束日期为apil-4的项目api,并且有一些项目
project A start date jan-3 enddate feb-5
project B start date Feb-4 enddate Sep-7
project C start date March-4 enddate Sep - 8
project D start date May-5 enddate Jun-7
然后,将返回项目A,B,C,但是,如果一个项目A的开始日期为1月1日,结束日期为9月5日,而我要求的开始日期为3月1日,结束日期为3月30日,那么我就不会获得项目-一种
如果要获取在数据时间范围内“包含”的项目,则应筛选:
project = Project.objects.filter(
Q(startDate__lte=startDate, endDate__gte=endDate)
**ProjectParam
).order_by(const.START_TIME_PROPERTY)
这将列出所有开始于或之前startDate
,结束于或之后的项目endDate
。
如果您希望所有项目都重叠,则可以使用:
project = Project.objects.filter(
Q(startDate__lte=endDate, endDate__gte=startDate)
**ProjectParam
).order_by(const.START_TIME_PROPERTY)
之所以有效,是因为所有不属于重叠的元素都有一个startDate
大于endDate
或endDate
小于的元素startDate
。因此,我们否定了这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句