Лукап week
Лукап week применяется к полям модели, содержащим дату или дату и время. Он позволяет фильтровать записи, у которых номер недели в году соответствует заданному значению. Нумерация недель соответствует стандарту ISO 8601, где первая неделя года - та, в которой содержится первый четверг. Аргументом передается целое число от 1 до 53.
Синтаксис
Model.objects.filter(field_name__week=week_number)
Пример
Допустим, у нас есть модель Article с полем created_at. Давайте отфильтруем статьи, созданные на 10-й неделе года:
from myapp.models import Article
res = Article.objects.filter(created_at__week=10)
for article in res:
print(article.title)
Результат выполнения кода:
"article 1"
"article 2"
Пример
Отфильтруем статьи, созданные на текущей неделе. Для этого воспользуемся функцией datetime для получения текущей даты:
from myapp.models import Article
from datetime import date
current_week = date.today().isocalendar()[1]
res = Article.objects.filter(created_at__week=current_week)
for article in res:
print(article.title)
Результат выполнения кода:
"article 3"
"article 4"
Пример
Лукап week также можно комбинировать с другими условиями. Например, отфильтруем статьи, созданные на 10-й неделе, но только те, у которых статус 'published':
from myapp.models import Article
res = Article.objects.filter(
created_at__week=10,
status='published'
)
for article in res:
print(article.title)
Результат выполнения кода:
"article 1"