Лукап week_day
Лукап week_day применяется к полям типа DateField и DateTimeField для фильтрации записей по дню недели. Этот лукап позволяет выбирать объекты, у которых дата или дата-время попадают на определенный день недели. Значения передаются в виде целых чисел от 1 до 7, где 1 - воскресенье, 2 - понедельник, и так далее до 7 - суббота. Также можно использовать строковые представления дней недели на английском языке.
Синтаксис
Model.objects.filter(field_name__week_day=value)
Пример
Давайте отфильтруем события, которые запланированы на понедельник (день недели 2):
from myapp.models import Event
monday_events = Event.objects.filter(date__week_day=2)
for event in monday_events:
print(event.title)
Результат выполнения кода:
"Team meeting"
"Project presentation"
Пример
Давайте отфильтруем заказы, которые были созданы в пятницу (день недели 6) в текущем году:
from 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)
Результат выполнения кода:
101
103
107
112
Пример
Давайте отфильтруем статьи, которые были опубликованы в воскресенье (день недели 1) или субботу (день недели 7):
from 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)
Результат выполнения кода:
"Weekend reading"
"Sunday special"
"Saturday review"
Пример
Давайте отфильтруем задачи, которые запланированы на среду (день недели 4) и имеют статус "active":
from myapp.models import Task
wednesday_tasks = Task.objects.filter(
due_date__week_day=4,
status='active'
)
for task in wednesday_tasks:
print(task.name)
Результат выполнения кода:
"Review pull requests"
"Update documentation"
"Team sync meeting"