У меня есть форма, которая выглядит следующим образом:Django формы - cleaned_data KeyError
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
следующим образом:
form = AForm(request.POST, instance=self.object)
if forms.is_valid():
# ...
else:
# ...
Это случается иногда, что мой пользователи производят KeyError
в clean
по строке, обозначенной ERR
.
Я не понимаю, как это возможно, поскольку, as the documentation reads, cleaned_data должен содержать (как ключи от ключа) все поля формы.
Также я не могу воспроизвести ошибку, когда я пробовал посылку ничего для email1
и email2
(или пустые/пустые значения).
Что мне здесь не хватает?
Поскольку я перечитываю документацию, я понимаю, что это означает, что 'cleaned_data' должен включать все ключи ** после' form.is_valid() '** (я еще не просмотрел код, когда точно он заполнен всеми клавишами). Тем не менее, мне интересно, как воспроизвести ошибку – lajarre
Является ли это опечаткой? cleaned_data = super (PUWForm_fwd, self) .clean() Название класса - AForm. –
@JonS. right, typo – lajarre