Лукап week

Лукап week применяется к полям модели, содержащим дату или дату и время. Он позволяет фильтровать записи, у которых номер недели в году соответствует заданному значению. Нумерация недель соответствует стандарту ISO 8601, где первая неделя года - та, в которой содержится первый четверг. Аргументом передается целое число от 1 до 53.

Синтаксис

pythonModel.objects.filter(field_name__week=week_number)

Пример

Допустим, у нас есть модель Article с полем created_at. Давайте отфильтруем статьи, созданные на 10-й неделе года:

pythonfrom myapp.models import Article

res = Article.objects.filter(created_at__week=10)
for article in res:
  print(article.title)

Результат выполнения кода:

python"article 1"
"article 2"

Пример

Отфильтруем статьи, созданные на текущей неделе. Для этого воспользуемся функцией datetime для получения текущей даты:

pythonfrom 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)

Результат выполнения кода:

python"article 3"
"article 4"

Пример

Лукап week также можно комбинировать с другими условиями. Например, отфильтруем статьи, созданные на 10-й неделе, но только те, у которых статус 'published':

pythonfrom myapp.models import Article

res = Article.objects.filter(
  created_at__week=10,
  status='published'
)
for article in res:
  print(article.title)

Результат выполнения кода:

python"article 1"

Смотрите также

  • лукап year,
    который фильтрует записи по году
  • лукап month,
    который фильтрует записи по месяцу
  • лукап day,
    который фильтрует записи по дню месяца
  • лукап week_day,
    который фильтрует записи по дню недели