Как проверить два временных периода на совпадение в django?

Например, у меня есть два временных периода 02:00:00 - 03:00:00, теперь я хочу проверить, что новое входящее время начала и окончания не попадает в этот диапазон.

01:00:00 - 02:00:00 и 03:00:00 - 04:00:00 должны быть приемлемыми.

Вы можете использовать объект Q для выполнения этого запроса.

from django.db.models import Q

overlapping_slots = Slot.objects.filter(
    Q(start_time__lt=new_start_time, end_time__gt=new_start_time) | 
    Q(start_time__lt=new_end_time, end_time__gt=new_end_time)
)

if overlapping_slots.exists():
    # invalidate the form here

По сути, вы проверяете, есть ли в БД слоты, где new_start_time находится между начальным и конечным временем этого слота, и где new_end_time находится между начальным и конечным временем этого слота. документация для объектов Q: https://docs.djangoproject.com/en/3.2/topics/db/queries/#complex-lookups-with-q-objects

Вернуться на верх