Django ORM - Фильтр по диапазонам нескольких столбцов
У меня есть требование получить данные (как i_week
, так и i_year
) за последний год от текущей даты. Таблица имеет следующие столбцы. Назовем таблицу temp
.
i_week
- Номер недели [1,52]i_year
- ГодOther columns
Я знаю, как получить данные с помощью SQL (Postgres). Вот запрос:
SELCT "i_week", "i_year" FROM "temp" WHERE ("i_week", "i_year") BETWEEN (1, 2021) AND (52, 2022);
На данный момент я пробовал использовать Django ORM следующим образом:
temp.objects.filter(i_week__range=(previous_week, current_week), i_year__range=(previous_year, current_year))
Но это не дает мне желаемого результата.
Как я могу выполнить вышеприведенный SQL-запрос, используя Django ORM? Как я могу фильтровать диапазоны i_week
и i_year
одновременно в ORM ?
давайте просто упомянем метод объекта Q
. Вы можете попробовать выполнить ORM-запрос таким образом:
from django.db.models import Q
temp.objects.filter(
Q(i_week__range=(previous_week, current_week)) &
Q(i_year__range=(previous_year, current_year))
)