Django ModelForm自定义验证:如何访问提交的字段值

时间:2013-02-26 17:16:26

标签: django validation modelform

我有以下模型表单,并希望将自定义验证添加到名为“billable_work”的字段中。

如何访问表单中提交的字段“项目”?我想检查项目的值(以下示例中的'p'),但无法找到正确的语法,以便我可以测试提交的值。任何帮助将不胜感激。

class EntryForm(forms.ModelForm):
    class Meta:
        model = Entries
        exclude = ('billable_work','notes')  

    billable_work = forms.BooleanField()
    notes = forms.CharField(widget=forms.Textarea,required=False)

    def clean_billable_work(self):
        b = self.cleaned_data['billable_work']
        p = form.fields['project']

        if b == True and p == 523:
            raise forms.ValidationError(_("Entries cannot be both billable and NONE: Indirect."))
        return self.cleaned_data['billable_work']

1 个答案:

答案 0 :(得分:13)

我认为您希望覆盖模型上的clean()方法,而不是特定表单字段的clean方法。来自文档 -

  

此方法应用于提供自定义模型验证,以及   如果需要,修改模型上的属性。例如,你可以   用它来自动为字段提供值,或者做   验证需要访问多个字段。

如果您确实希望在表单中放置验证,那么表单上的clean()方法会提供类似的功能(请参阅docs)。