Увеличение месяца даты по интервалу в поле модели в фильтре - PullRequest
0 голосов
/ 19 ноября 2018

Я получаю такие предметы. date_from, date_to - входные переменные

result = Records.objects.filter(recorddate__range=(date_from, date_to))

Существует еще одна целочисленная переменная off_set. Как я могу использовать это в фильтре, как это поэтому поле месяца записи увеличивается на номера off_set. Как

result = Records.objects.filter((recorddate+off_set)__range=(date_from, date_to))

1 Ответ

0 голосов
/ 21 ноября 2018

Как уже упоминалось в комментариях, вы можете вычесть смещение из диапазона, чтобы отфильтровать соответствующие записи.

Создание смещения может быть немного сложнее, поскольку месяцы имеют разное количество дней (Pythontimedelta не поддерживает месяцы).

Для этого вы можете рассмотреть dateutil.relativedelta(), хотя для этого потребуется отдельный pip install python-dateutil.Вам также необходимо убедиться, что date_from и date_to были преобразованы в datetime объекты, если они еще не были.Например:

from dateutil.relativedelta import relativedelta

months = relativedelta(months=off_set)
result = Records.objects.filter(recorddate__range=(date_from - months, date_to - months))
...