Я использую django-crispy-forms
для красиво оформленных форм. Для одной из моих форм мне пришлось внести некоторые пользовательские настройки, и теперь мне интересно, как правильно проверять ошибки, которые не относятся к конкретному полю, а ко всей форме.
В частности, моя форма содержит дату начала и окончания:
# forms.py
class PlotForm(forms.Form):
start_date = forms.DateField(initial=last_month, widget=forms.widgets.DateInput(attrs={'type': 'date'}))
end_date = forms.DateField(initial=datetime.date.today, widget=forms.widgets.DateInput(attrs={'type': 'date'}))
def clean(self):
cleaned_data = super().clean()
start_date = cleaned_data.get('start_date')
end_date = cleaned_data.get('end_date')
if start_date > end_date:
raise forms.ValidationError("Start date must not be before end date.")
return start_date
Чтобы убедиться, что дата окончания не предшествует дате начала, я использую clean(self)
.
Однако ошибка никогда не отображается.
<form method="post">
{% csrf_token %}
<div class="row">
<div class="col-6">
{{ form.start_date|as_crispy_field }}
</div>
<div class="col-6">
{{ form.end_date|as_crispy_field }}
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Я могу исправить это, добавив {{ form.errors }}
, но это выглядит очень некрасиво. Есть ли простой способ красиво отображать ошибки проверки, связанные с формой, с помощью crispy
? Хорошо показаны ошибки, связанные с полем.