django一次清理多个字段

问题描述 投票:0回答:2

我有一个包含开始日期和结束日期的表单。如何清理表单,以便结束日期在开始日期之后。我可以清理一个字段,但不确定如何在将字段与另一个字段进行比较时清理字段。此外,当这出错时,我希望能够在{{ 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
django django-forms
2个回答
0
投票

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

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

0
投票

你可以通过传递dict

raise forms.ValidationError({'end_date': u'Error: The ending date must come after the starting date.'})
© www.soinside.com 2019 - 2024. All rights reserved.