Лукап second
Лукап second применяется к полям моделей с типом DateTimeField или TimeField и позволяет фильтровать записи по значению секунд (от 0 до 59) в временной части поля. Он используется в цепочке методов фильтрации, таких как filter и exclude, и принимает целочисленное значение секунд для сравнения. Лукап работает на уровне базы данных, что делает его эффективным для выборки записей по временным интервалам.
Синтаксис
Model.objects.filter(field__second=value)
Где field - имя поля модели с типом DateTimeField или TimeField, а value - целое число от 0 до 59, обозначающее секунду для фильтрации.
Пример . С DateTimeField
Пусть у нас есть модель Event с полем start_time типа DateTimeField. Найдем все события, которые начинаются в 30-ю секунду каждой минуты:
from myapp.models import Event
events = Event.objects.filter(start_time__second=30)
for event in events:
print(event.name)
Результат выполнения кода:
"Morning meeting"
"Afternoon workshop"
Пример . С TimeField
Пусть у нас есть модель Schedule с полем time типа TimeField. Найдем все записи расписания, у которых секунды равны 0 (то есть начало каждой минуты):
from myapp.models import Schedule
schedules = Schedule.objects.filter(time__second=0)
for schedule in schedules:
print(schedule.description)
Результат выполнения кода:
"Start of hour"
"Quarter past"
Комбинирование с другими лукапами
Лукап second можно комбинировать с другими лукапами, например gte или lte, для поиска записей в диапазоне секунд. Найдем события, которые начинаются с 10-й по 20-ю секунду каждой минуты:
from myapp.models import Event
events = Event.objects.filter(
start_time__second__gte=10,
start_time__second__lte=20
)
for event in events:
print(f"{event.name}: {event.start_time}")
Результат выполнения кода:
"Short break: 2026-09-05 14:15:15"
"Quick update: 2026-09-05 16:20:18"