Как отфильтровать поле времени в списке между двумя временами
Я создал приложение, в котором интервьюер может заполнять формы и планировать несколько интервью. вот модель для расписания:
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)
как я могу фильтровать его таким образом?