Как отфильтровать поле времени в списке между двумя временами

Я создал приложение, в котором интервьюер может заполнять формы и планировать несколько интервью. вот модель для расписания:

class ScientificSchedule(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    start_time = models.TimeField(blank=True, null=True)
    end_time = models.TimeField(blank=True, null=True)
    date = models.DateField(blank=True, null=True)
    province = models.CharField(max_length=100, blank=True)

и я написал для него следующее представление:

class ScientificScheduleView(FormView):
    template_name = 'reg/scientific-schedule.html'
    form_class = ScientificScheduleForm

    def post(self, request):
        form = ScientificScheduleForm(request.POST)
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form):
        form.save()
        return super(ScientificScheduleView, self).form_valid(form)

все работает нормально. Я хочу добавить утверждение в функцию form_valid, которое проверяет, существует ли уже другое расписание в этот промежуток времени. Например, представьте, что у этого конкретного пользователя есть интервью с 8 до 10 утра. Ему не разрешено назначать другое интервью между 8 и 10. Как мне сделать так, чтобы он проверил объекты предыдущих собеседований пользователя и увидел, разрешено ли ему отправлять эту форму или нет? Я хочу что-то вроде этого:

def form_valid(self, form):
    if ScientificSchedule.objects.filter(user=self.request.user, province=form.instance.province, date=form.instance.date, 
start_time__in=[a list between two times from other interviews on that specific date]).exists():
        return self.form_invalid(form)
    else:
        form.save()
        return super(ScientificScheduleView, self).form_valid(form)

как я могу фильтровать его таким образом?

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