@s1vemod

Как проверить промежуток времени в Django?

Добрый день.
Предположим, у меня есть модель, у неё два поля start, end - TimeField.

Мне прилетает запрос с такими же данными start, end, мне надо, чтобы эти start и end не заходили в промежуток времени всех остальных объектов этой модели.

То есть если есть объект с такими данными: "13:00-14:30", то объект с таким данными: "12:30-13:30" создать уже не получиться.
Стоит учесть, что объект с "13:00-14:30" тоже создать не получиться.

Как я могу это красиво реализовать?
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
@pyHammer
s1vemod реализовать такое можно только через валидацию форм, вот например так
class MyModel(models.Model):
    start = models.TimeField(null=True)
    end = models.TimeField(null=True)

class MyForm(forms.Form):
    start = forms. TimeField(required=True)
    end = forms. TimeField(required=True)

    def clean(self):
        cleaned_data = super().clean()
        start = cleaned_data.get("start")
        end = cleaned_data.get("end")

        check =  MyModel.objects \
            .filter(
                Q(start__in=[start, end]) | (Q(end__in=[start, end])
            ).exists():
        if check:
            raise forms.ValidationError('error')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы