Лукап week_day

Лукап week_day применяется к полям типа DateField и DateTimeField для фильтрации записей по дню недели. Этот лукап позволяет выбирать объекты, у которых дата или дата-время попадают на определенный день недели. Значения передаются в виде целых чисел от 1 до 7, где 1 - воскресенье, 2 - понедельник, и так далее до 7 - суббота. Также можно использовать строковые представления дней недели на английском языке.

Синтаксис

pythonModel.objects.filter(field_name__week_day=value)

Пример

Давайте отфильтруем события, которые запланированы на понедельник (день недели 2):

pythonfrom myapp.models import Event

monday_events = Event.objects.filter(date__week_day=2)
for event in monday_events:
  print(event.title)

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

python"Team meeting"
"Project presentation"

Пример

Давайте отфильтруем заказы, которые были созданы в пятницу (день недели 6) в текущем году:

pythonfrom myapp.models import Order
from datetime import date

current_year = date.today().year
friday_orders = Order.objects.filter(
  created_at__year=current_year,
  created_at__week_day=6
)
for order in friday_orders:
  print(order.id)

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

python101
103
107
112

Пример

Давайте отфильтруем статьи, которые были опубликованы в воскресенье (день недели 1) или субботу (день недели 7):

pythonfrom myapp.models import Article
from django.db.models import Q

weekend_articles = Article.objects.filter(
  Q(published_at__week_day=1) | Q(published_at__week_day=7)
)
for article in weekend_articles:
  print(article.title)

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

python"Weekend reading"
"Sunday special"
"Saturday review"

Пример

Давайте отфильтруем задачи, которые запланированы на среду (день недели 4) и имеют статус "active":

pythonfrom myapp.models import Task

wednesday_tasks = Task.objects.filter(
  due_date__week_day=4,
  status='active'
)
for task in wednesday_tasks:
  print(task.name)

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

python"Review pull requests"
"Update documentation"
"Team sync meeting"

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

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