Django - Поиск зарезервированного времени

Я хотел бы показать все доступное время для незабронированных дат встречи с временным интервалом между 11:00AM и 21:00PM:

models.py

class Appointment(models.Model):
    
    user = models.ForeignKey(Account, on_delete=models.CASCADE)
    seat = models.ForeignKey(Seat, on_delete=models.SET_NULL, null=True)
    work = models.ManyToManyField(Therapy, related_name='work', verbose_name=_('Work'), blank=True)
    start_appointment = models.DateTimeField(default=timezone.now, blank=True)
    end_appointment = models.DateTimeField(default=timezone.now, blank=True)

views.py

    def check_available_hours(request):
        day_request = date.today()
        day_request1 = str(day_request)
        date_of_reference = datetime.strptime(day_request1, "%Y-%m-%d")
    
        initial_time = datetime.combine(date_of_reference.date(), time(11, 0))
        final_time = datetime.combine(date_of_reference.date(), time(21,0))
    
        appointments_of_day = Appointment.objects.filter(
            start_appointment__gte=initial_time,
            start_appointment__lte=final_time
        )
        print(appointments_of_day) # This returns all appointments in a day
    
        reserved_times = [datetime(2021, 12, 8, 11, 0), datetime(2021, 12, 8, 15, 0)]
    
        hours_between = [datetime.combine(date_of_reference.date(), time(hour + initial_time.hour, 0)) for hour in range(((final_time - initial_time).seconds // 3600) + 1)]
    
        available_hours = [hour for hour in hours_between if hour not in reserved_times]

        return render(request, "name_template.html", {"hours": avaliable_hours})

Если я устанавливаю reserved_dates как указано выше, то все работает. Однако я пытаюсь установить его на основе моих моделей, поэтому я использовал приведенный ниже код, но он ничего не возвращает.

reserved_times = []
for appointment in appointments_of_day:
    for i in range((appointment.end_appointment - appointment.start_appointment).seconds//3600):
        reserved_times.append(appointment.start_appointment + timedelta(hours=i))
print(reserved_times)

Есть предложения?

Спасибо

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