Сравнение полей DateField в Django

Рейтинг: 0Ответов: 2Опубликовано: 15.10.2014

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

class forma(forms.ModelForm):
    class Meta:
        model = new_form
        widgets = {
            'date_1': SelectDateWidget(years=range(2010, 2015),
            'date_2': SelectDateWidget(years=range(2010, 2015),
        }

        def clean_date_1(self):
             date_1 = self.cleaned_data.get('date_1', None)
             date_2 = self.cleaned_data.get('date_2', None)
             if date_2:
                  if date_1 >= date_2:
                      raise ValidationError("Дата1 не может быть позже Дата2")
             return date_1

Ответы

▲ 0Принят

А проблема в том, что вообще не выполняется условие if date_2? Уж не из-за того ли, что и в модели тоже date_2 определяется позже, чем date_1? Проверьте этот нюанс. Наверняка эта же проверка сработает в методе clean_date_2. Есть такая особенность в обработке полей формы.

▲ 0

Сомнительно название "new_form" для модели...

Если Вы пишите clean_ метод валидации данных, которые придут, например, методом POST из типичной html-формы, то переведите в этом методе полученные строки в даты через strptime и сравнивайте, как хотели.