1

当一个字段为空时,为什么会出现 keyerror 而不是验证错误?这些字段应required=True默认为

class form(forms.ModelForm):
    adminAccount = forms.CharField()
    adminPassword = forms.CharField(widget=forms.PasswordInput)

    def userCheck(self, user, password):
        # do something

    def clean(self):
        self.userCheck(self.cleaned_data['adminAccount'], 
                       self.cleaned_data['adminPassword']) 
4

1 回答 1

1

这是您的代码在KeyError这里提出:

self.userCheck(self.cleaned_data['adminAccount'],
               self.cleaned_data['adminPassword'])

因为您试图self.cleaned_data[field]在未发布字段时访问。

文档提供了一个示例,说明如何验证依赖于多个字段的数据。根据示例,您应该执行以下操作:

cleaned_data = super(form, self).clean()
adminAccount = cleaned_data.get('adminAccount')
adminPassword = cleaned_data.get('adminPassword')

if adminAccount and adminPassword:
    # proceed with your validation

return cleaned_data

另外,请记住Form.clean()必须返回 clean_data 字典。

于 2013-03-13T10:43:40.310 回答