Дата окончания проверки больше даты начала в форме модели Django

У меня есть поля start_date и end_date в моей модели, я хочу назначить ошибку end_date, когда она больше, чем start_date, я искал документы, но не нашел примера об этом.

2 ответов


вам нужна пользовательская функция очистки в вашей форме, которая выполняет проверку:

def clean(self):
    start_date = cleaned_data.get("start_date")
    end_date = cleaned_data.get("end_date")
    if end_date < start_date:
        msg = u"End date should be greater than start date."
        self._errors["end_date"] = self.error_class([msg])

это фактический рекомендуемый пример из docs

короче говоря, не забудьте вернуть cleaned_data и правильно поднять ошибки формы.

from django import forms

class ContactForm(forms.Form):
    # Everything as before.
    ...

    def clean_recipients(self):
        data = self.cleaned_data['recipients']
        if "fred@example.com" not in data:
            raise forms.ValidationError("You have forgotten about Fred!")

    # Always return the cleaned data, whether you have changed it or
    # not.
    return data