Я пытаюсь создать запрос, который возвращает событие, если оно выполняется в любой точке данного периода времени между двумя датами.
модель:
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]))
У моих моделей есть start_date
и end_date
(hd_end_date).Сначала эта логика работала так, как задумано.Однако есть проблема, и я знаю, что есть, но не знаю, как ее решить.
Например, если моя модель событий начинается в декабре и заканчивается в феврале, приведенный выше код вернет событие за декабрь и февраль, но не вернет одно за январь, поскольку он не начинается и не заканчивается в этом месяце.Как я могу настроить этот код так, чтобы он возвращал событие, которое выполняется в течение нескольких месяцев.