Django forms cleaned_数据键

2024-09-25 02:32:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表单,如下所示:

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方法中按以下方式使用:

^{pr2}$

有时,我的用户在clean中用ERR标记的行生成KeyError。在

我不明白这是怎么可能的,因为,as the documentation reads,清理后的数据应该包含表单的所有字段(如dict键)。在

另外,当我测试发送email1email2(或空白/空值)时,我也无法重现错误。在

我错过了什么?在


Tags: selfcleanfalse表单datareturndefrequired
1条回答
网友
1楼 · 发布于 2024-09-25 02:32:49

您已经明确地将email1标记为required=False。这意味着完全可以在该字段没有值的情况下进行clean,在这种情况下,它将不会包含在cleaned_data dict中

为了避免这种情况,您可以使用普通dict get方法:

email1 = cleaned_data.get('email1')

或者,当然,你也可以把字段设为必需的。在

相关问题 更多 >