我有一个表单,如下所示:
class AForm(forms.ModelForm):
email1 = forms.EmailField(required=False, initial='')
email2 = forms.EmailField(required=False)
class Meta:
model = AModel
fields = ()
def clean_email1(self):
return self.cleaned_data['email1'].lower()
def clean_email2(self):
return self.cleaned_data['email2'].lower()
def clean(self):
cleaned_data = super(AForm, self).clean()
email1 = cleaned_data['email1'] # ERR
email2 = cleaned_data['email2']
# ...
它在视图post
方法中按以下方式使用:
有时,我的用户在clean
中用ERR
标记的行生成KeyError
。在
我不明白这是怎么可能的,因为,as the documentation reads,清理后的数据应该包含表单的所有字段(如dict键)。在
另外,当我测试发送email1
和email2
(或空白/空值)时,我也无法重现错误。在
我错过了什么?在
您已经明确地将email1标记为required=False。这意味着完全可以在该字段没有值的情况下进行clean,在这种情况下,它将不会包含在cleaned_data dict中
为了避免这种情况,您可以使用普通dict
get
方法:或者,当然,你也可以把字段设为必需的。在
相关问题 更多 >
编程相关推荐