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

Лукап time

Лукап time применяется к полям типа DateTimeField и позволяет фильтровать записи по времени, игнорируя дату. Он используется в составе поискового выражения с двойным подчеркиванием для извлечения временной части из даты-времени. Данный лукап полезен, когда требуется выбрать записи, созданные в определенное время суток, независимо от дня, месяца или года.

Синтаксис

Model.objects.filter(field__time=value) Model.objects.filter(field__time__gte=value) Model.objects.filter(field__time__lte=value) Model.objects.filter(field__time__range=(start, end))

Пример

Пусть у нас есть модель Event, хранящая информацию о событиях с полем start_time типа DateTimeField:

from django.db import models class Event(models.Model): title = models.CharField(max_length=200) start_time = models.DateTimeField() def __str__(self): return self.title

Давайте найдем все события, которые начинаются ровно в 15:30:00 (игнорируя дату):

from myapp.models import Event from datetime import time res = Event.objects.filter(start_time__time=time(15, 30, 0)) for event in res: print(event.title)

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

"Morning Workshop" "Afternoon Meeting"

Пример

Найдем события, которые начались после 14:00:00 независимо от даты:

from myapp.models import Event from datetime import time res = Event.objects.filter(start_time__time__gt=time(14, 0, 0)) for event in res: print(event.title)

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

"Afternoon Meeting" "Evening Concert"

Пример

Отфильтруем события, время начала которых находится в промежутке между 10:00:00 и 18:00:00:

from myapp.models import Event from datetime import time res = Event.objects.filter( start_time__time__range=(time(10, 0, 0), time(18, 0, 0)) ) for event in res: print(event.title)

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

"Morning Workshop" "Afternoon Meeting" "Evening Concert"

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

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