11

我有以下模型表单,并希望将自定义验证添加到名为“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']
4

1 回答 1

18

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

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

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

于 2013-02-26T17:29:58.037 回答