2

Django 1.4 文档中,它说clean_<fieldname>首先运行方法,然后执行表单clean方法。

我有以下代码示例。该表单与 FormPreview 一起使用。当pmid表单中的字段为空时,它应该抛出ValidationError异常,但它不会发生。

class MyForm(forms.Form):
    pmid = forms.CharField()
    .. other fields ..

    def clean(self):
        cd = super(MyForm, self).clean()
        cd['pmid'] # returns KeyError and it's not in cd
        return cd

我不覆盖任何clean_<field>方法。

4

1 回答 1

2

首先,如果您只想确保某个字段不为空,则只需添加required=True即可。例如:

class MyForm(forms.Form):
    pmid = forms.CharField(required=True)
    ...

你完成了。

但是,即使您不能那样做,您仍然不会在 中验证它clean,而是在clean_<fieldname>文档中描述的那样。

def clean_pmid(self):
    pmid = self.cleaned_data.get('pmid')
    if not pmid:
        raise forms.ValidationError('pmid cannot be blank')
    return pmid
于 2012-07-05T19:41:03.853 回答