Вот код, который у меня есть на данный момент.
models = Model.objects.annotate(
start_range=ExpressionWrapper(
F('a_date_on_the_model') + datetime.timedelta(days=-7),
output_field=DateField(),
),
end_range=ExpressionWrapper(
F('a_date_on_the_model') + datetime.timedelta(days=-2),
output_field=DateField(),
)
).filter(
F('today')__range=[F('start_range'), F('end_range')]
)
Очевидно, я не могу сделать диапазон для F('today')
, потому что это не столбец / ключевое слово базы данных, но я просто показываю, что у меня есть переменнаяпозвонил сегодня, что я пытаюсь сравнить с. Я чувствую, что я близко, но мог бы использовать некоторую помощь, чтобы закончить это. Примечание: -7
и -2
будут динамическими днями, но жестко закодированы, например. Эти числа и дни могут быть положительными или отрицательными, но первое число всегда будет больше, чем второе число.
Редактировать - это то, как будет выглядеть PSQL:
SELECT
*
FROM
my_table
WHERE
CURRENT_DATE BETWEEN (a_date_on_the_model + INTERVAL '-7 day') AND (a_date_on_the_model + INTERVAL '-1 day');