Как получить записи с каждым месяцем в диапазоне дат двух полей?

У меня есть модель учебного года, которая имеет дату начала и окончания.

class StudyYear(models.Model):
   date_begin = models.DateField(...)
   date_end = models.DateField(...)

Мне нужен Queryset, в котором есть записи для каждого учебного года с месяцем в диапазоне дат (начальная_дата:конечная_дата)

Пример: Для учебного года (09/01/2022:01/02/2023) qs должен содержать записи:

...
(code=9_2022, name='September 2022'),
(code=10_2022, name='November 2022'),
(code=11_2022, name='October 2022'),
(code=12_2022, name='December 2022'),
(code=1_2023, name='January 2023'),
(code=2_2023, name='February 2023'),
...

Честно говоря, я понятия не имею, как решить эту проблему, я очень надеюсь на вашу помощь!

Попробуем следующее:

from django.utils.timezone import now
from dateutil.relativedelta import relativedelta

# Get the First Day of This Month (September 1st 2022)
first_day = now().replace(day=1, month=9)

# Get the last Day of next year
last_day = first_day + relativedelta(months=13)

# Queryset
StudyYear.objects.filter(date_begin__gte=first_day, date_end__lte=last_day)
Вернуться на верх