Django Forms: Ошибка формы валидации при применении двух валидаций
У меня есть форма с 'start=forms.DateInput'
, end=forms.DateInput
и active=forms.CheckboxInput
, но когда я пытаюсь проверить эти поля, у меня возникают такие ошибки.
KeyError at /employee/edit/70000007/
'end'
...
if form.is_valid():
...
end = self.cleaned_data['end']
Но это работает нормально, когда применяется только один валидатор.
def clean_end(self):
start = self.cleaned_data['start']
end = self.cleaned_data['end']
if end < start:
raise forms.ValidationError('end date cannot be less than start date.')
return end
def clean_active(self):
active = self.cleaned_data['active']
end = self.cleaned_data['end']
if active and end:
raise forms.ValidationError('active employee should cannot be end date')
return active
Спасибо за помощь.
Это работает нормально, используя чистый метод.
# forms.py
def clean(self):
cleaned_data = super().clean()
start = cleaned_data.get('start')
end = cleaned_data.get('end')
active = cleaned_data.get('active')
if end < start:
raise forms.ValidationError('end date cannot be less than start date.')
if end and active:
raise forms.ValidationError('active employee should cannot be end date.')
# template.html
{% for error in form.non_field_errors %}
{{error}}
{% endfor %}