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

Mra*_*rak 7 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']
Run Code Online (Sandbox Code Playgroud)

Aid*_*wen 13

我想你想覆盖模型上的clean()方法而不是特定表单字段的clean方法.来自文档 -

此方法应用于提供自定义模型验证,并根据需要修改模型上的属性.例如,您可以使用它自动为字段提供值,或者进行需要访问多个字段的验证.

如果您确实希望将验证放在表单中,那么表单上的clean()方法提供了类似的功能(请参阅文档).