Python 3.x Django日期过滤器-查找介于两者之间的日期
我试图创建一个查询,如果它在两个日期之间的给定时间段内的任何时间点运行,则返回一个事件 型号:Python 3.x Django日期过滤器-查找介于两者之间的日期,python-3.x,django-2.1,Python 3.x,Django 2.1,我试图创建一个查询,如果它在两个日期之间的给定时间段内的任何时间点运行,则返回一个事件 型号: class MyModel(models.Model): start_date = models.DateField(auto_now=False, blank=True, null=True, verbose_name="Start date") hd_end_date = models.DateField(blank=True, default=None, null=True, v
class MyModel(models.Model):
start_date = models.DateField(auto_now=False, blank=True, null=True, verbose_name="Start date")
hd_end_date = models.DateField(blank=True, default=None, null=True, verbose_name="End date")
要尝试和筛选的当前代码:
import calendar
max_day = calendar.monthrange(year, month)[1]
start = "{}-{}-01".format(year, month)
end = "{}-{}-{}".format(year, month, max_day)
# If the event starts in the month, or if it ends in the month
filter.append(Q(start_date__range=[start, end]) |
Q(hd_end_date__range=[start, end]))
我的型号有一个开始日期
和一个结束日期
(hd\u结束日期)。这种逻辑一开始似乎是按预期的那样起作用的。然而,有问题,我知道是什么,只是不知道如何解决它
例如,如果我的事件模型在12月开始,在2月结束,那么上面的代码将返回12月和2月的事件,但不会返回1月的事件,因为它既不在该月开始也不在该月结束。如何调整此代码,使其返回一个运行数月的事件 看来我想得太多了,通过简化解决了这个问题
filter.append(Q(开始日期月份lte=month,hd\U结束日期月份gte=month))
我意识到我可以只看一个月,而不需要确定日期,因为我只想知道活动在该月的开始日期和结束日期之间进行