РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
125 of 818 menu

Лукап iso_week_day

Лукап iso_week_day применяется к полям типа DateField или DateTimeField и позволяет отфильтровать записи по дню недели в формате ISO. Он принимает значения от 1 до 7, где 1 - понедельник, а 7 - воскресенье. Это особенно полезно, когда нужно получить данные за определенный день недели независимо от даты.

Синтаксис

Model.objects.filter(field__iso_week_day=value)

Пример

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

from myapp.models import Article monday_articles = Article.objects.filter(published_date__iso_week_day=1) for article in monday_articles: print(article.title)

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

"Monday Morning News" "Start of Week Review" "Weekly Planning Tips"

Пример

Давайте найдем все записи в блоге, созданные в выходные дни (суббота и воскресенье - дни 6 и 7 по ISO):

from myapp.models import Post weekend_posts = Post.objects.filter( created_at__iso_week_day__in=[6, 7] ) for post in weekend_posts: print(f"{post.title} - {post.created_at}")

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

"Weekend Update - 2025-01-11 14:30:00" "Sunday Reflections - 2025-01-12 09:15:00" "Saturday Special - 2025-01-18 10:00:00"

Пример

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

from myapp.models import User wednesday_users = User.objects.filter( registration_date__iso_week_day=3 ).values('username', 'registration_date') for user in wednesday_users: print(user)

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

{'username': 'alice', 'registration_date': datetime.date(2025, 1, 15)} {'username': 'bob', 'registration_date': datetime.date(2025, 1, 22)} {'username': 'charlie', 'registration_date': datetime.date(2025, 1, 29)}

Пример

Давайте подсчитаем количество заказов, сделанных в пятницу (день недели 5 по ISO):

from myapp.models import Order friday_orders_count = Order.objects.filter( order_date__iso_week_day=5 ).count() print(friday_orders_count)

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

"42"

Пример

Давайте получим задачи, назначенные на вторник или четверг (дни 2 и 4 по ISO):

from myapp.models import Task from datetime import date midweek_tasks = Task.objects.filter( due_date__iso_week_day__in=[2, 4], due_date__gte=date(2025, 1, 1) ) for task in midweek_tasks: print(f"{task.name} - {task.due_date}")

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

"Complete report - 2025-01-07" "Team meeting - 2025-01-09" "Review progress - 2025-01-14"

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

  • лукап year,
    который фильтрует записи по году
  • лукап month,
    который фильтрует записи по месяцу
  • лукап day,
    который фильтрует записи по дню месяца
  • лукап week_day,
    который фильтрует записи по дню недели (1-7, где 1 - воскресенье)
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить