【问题标题】:django clean multiple fields at oncedjango 一次清理多个字段
【发布时间】:2018-11-18 01:37:45
【问题描述】:

我有一个带有开始日期和结束日期的表格。如何清理表格以使结束日期在开始日期之后。我可以清理一个字段,但不确定如何在将字段与另一个字段进行比较时清理它。此外,当出现此错误时,我希望能够在{{ 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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你可以通过dict来做到这一点

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-04
        • 2023-04-09
        • 1970-01-01
        • 2020-06-22
        相关资源
        最近更新 更多