Проверить диапазон дат с использованием Q класса в Python

Я запутался, я пытаюсь проверить попадает ли диапазон дат создаваемой записи в диапазоны дат уже существующих записей, и отсеять их.

from django.db.models import Q

start = request.POST['start_date']
end = request.POST['end_date']
gpu = request.POST['id_gpu']
    
group = Group.objects.filter(id_gpu=gpu)
    
q = (Q(start_date__lte=start) & Q(end_date__gte=start)) | 
(Q(start_date__lte=end) & Q(end_date__gte=end))
    
groups = group.exclude(q)
    
print('q = ', q)
print('group.query = ', group.query)
print('groups = ', groups)
print('groups.query = ', groups.query)
    
error2 = None
if not groups:
    error2 = 'На указанные даты проведения работ уже существует группа работ по выбранному оборудованию'
    
if request.POST.get('save') and form.is_valid() and groups:
    just_created = form.save(commit=False)

Через print я получил следующий результат, мне не удалось отсеять даты попадающие в диапазон, подскажите, пожалуйста, что не так:

q =  (OR: (AND: ('start_date__lte', '2022-09-13'), ('end_date__gte', '2022-09-13')), (AND: ('start_date__lte', '2022-09-14'), ('end_date__gte', '2022-09-14')))

group.query =  SELECT "Group"."id_group", "Group"."id_filial_id", "Group"."id_cs_id", "Group"."id_gpu_id", "Group"."name_group", "Group"."short_description", "Group"."creation_date", "Group"."date_of_change", "Group"."start_date", "Group"."end_date", "Group"."Create_User" FROM "Group" WHERE "Group"."id_gpu_id" = 8

groups =  <QuerySet [<Group: Qui ex exercitationem dolores neque quo molestiae fugit quasi nemo et officia nesciunt>, <Group: Quod in dolore modi iste do>, <Group: Dolorum ut beatae dolor veniam laborum Ut proident explicabo Esse esse quibusdam consectetur quos aliqua Dolor ab deleniti>, <Group: Recusandae Necessitatibus eaque et at est est reprehenderit dolorem incidunt accusantium nesciunt>]>

groups.query =  SELECT "Group"."id_group", "Group"."id_filial_id", "Group"."id_cs_id", "Group"."id_gpu_id", "Group"."name_group", "Group"."short_description", "Group"."creation_date", "Group"."date_of_change", "Group"."sta
rt_date", "Group"."end_date", "Group"."Create_User" FROM "Group" WHERE ("Group"."id_gpu_id" = 8 AND NOT ((("Group"."start_date" <= 2022-09-13 AND "Group"."start_date" IS NOT NULL AND "Group"."end_date" >= 2022-09-13 AND "Group"."end_date" IS NOT NULL) OR ("Group"."start_date" <= 2022-09-14 AND "Group"."start_date" IS NOT NULL AND "Group"."end_date" >= 2022-09-14 AND "Group"."end_date" IS NOT NULL))))

models.py

class Group(models.Model):
      id_group = models.AutoField(primary_key=True)
      start_date = models.DateField(auto_now=False, blank=True, null=True)
      end_date = models.DateField(auto_now=False, blank=True, null=True)
start = request.POST['start_date']
end = request.POST['end_date']
gpu = request.POST['id_gpu']

group = Group.objects.filter(id_gpu=gpu)

q = (Q(start_date__lte=start) & Q(end_date__gte=start)) | (Q(start_date__lte=end) & Q(end_date__gte=end))

groups = group.filter(q)

error2 = None
if groups:
    error2 = 'На указанные даты проведения работ уже существует группа работ по выбранному оборудованию'

if request.POST.get('save') and form.is_valid() and not groups:
    just_created = form.save(commit=False)
Вернуться на верх