Python Django表单集:成员表单清理方法不起作用?
我创建了一个具有自定义Python Django表单集:成员表单清理方法不起作用?,python,django,forms,Python,Django,Forms,我创建了一个具有自定义clean()方法的模型表单。但是这个clean()方法不再起作用了,因为我用该模型表单创建了一个表单集,因为它无法在QueryDict中找到数据。那么现在该怎么做才能让它工作(在formset QueryDict中查找与该表单相关的数据) 这是会员表格: class option_form(ModelForm): class Meta: model = option exclude = ('warval','user')
clean()
方法的模型表单。但是这个clean()
方法不再起作用了,因为我用该模型表单创建了一个表单集,因为它无法在QueryDict
中找到数据。那么现在该怎么做才能让它工作(在formset QueryDict中查找与该表单相关的数据)
这是会员表格:
class option_form(ModelForm):
class Meta:
model = option
exclude = ('warval','user')
def clean_value(self):
self.data = self.data.copy()
print(self.data)
if self.data['value']=='lol@lol.co':
raise forms.ValidationError("This can't be your email address")
return self.data['value']
这就是错误:
Exception Type: MultiValueDictKeyError
Exception Value: "Key 'value' not found in <QueryDict: {u'form-1-value': [u''], u'form-INITIAL_FORMS': [u'1'], u'form-TOTAL_FORMS': [u'2'], u'form-MAX_NUM_FORMS': [u''], u'form-0-id': [u'1'], u'form-1-id': [u''], u'csrfmiddlewaretoken': [u'e645de635fe47559ac540eb32ea4d08d'], u'form-0-value': [u'lol@lol.co']}>"
异常类型:多值错误
异常值:“在中找不到键“值”
在clean_value
方法中,您应该从self.cleaned_data
获取值,而不是从self.data
获取值。有关示例,请参见上的文档
self.data
是您初始化表单时使用的原始POST或GET数据。它不包含名为value
的键,因为这些键的值类似于form-0-
尝试将清理方法更改为以下内容:
def clean_value(self):
value = self.cleaned_data['value']
if value == 'lol@lol.co':
raise forms.ValidationError("This can't be your email address")
return value
一些示例代码可以帮助隔离问题。在访问clean中的属性之前,是否调用super的clean方法?类似super(MyModelForm,self).clean()不,我没有调用任何super的clean方法。