gpt4 book ai didi

python - Django 表单 - cleaned_data KeyError

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:59 24 4
gpt4 key购买 nike

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

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']
# ...

它在 View post 方法中的使用方式如下:

form = AForm(request.POST, instance=self.object)
if forms.is_valid():
# ...
else:
# ...

有时我的用户会在标有 ERR 的行的 clean 中产生 KeyError

我不明白这怎么可能,因为,as the documentation reads , cleaned_data 应该包含(作为字典键)表单的所有字段。

此外,当我测试为 email1email2(或空白/空值)发送任何内容时,我也无法重现该错误。

我在这里错过了什么?

最佳答案

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

为了防止这种情况,您可以使用普通的字典 get 方法:

email1 = cleaned_data.get('email1')

或者,当然,您可以将该字段设为必填。

关于python - Django 表单 - cleaned_data KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27176589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com