django一次清理多个字段

时间:2018-06-08 03:47:52

标签: django django-forms

我有一张包含开始日期和结束日期的表单。如何清理表单,以便结束日期在开始日期之后。我可以清理一个字段,但不确定如何在将字段与另一个字段进行比较时清理字段。此外,当这出错时,我希望能够在{{ form.end_date.errors }}中进行错误渲染,而不是一般部分。有没有办法用forms.ValidationError

来做到这一点
class ContractChangeForm(forms.ModelForm):
    ...
    def clean(self):
        start_date = self.cleaned_data['start_date']
        end_date = self.cleaned_data['end_date']

        if end_date < start_date:
            raise forms.ValidationError(u'Error: The ending date must come after the starting date.',code='invalid_date')
        return end_date

2 个答案:

答案 0 :(得分:0)

您可以使用add_error()方法将错误附加到特定字段:

if end_date < start_date:
   self.add_error('field_name','Error text message....')

答案 1 :(得分:0)

您可以传递dict

raise forms.ValidationError({'end_date': u'Error: The ending date must come after the starting date.'})