Chr*_*isW 7 python django django-forms
我有一个允许用户更改密码的Django表单.我发现字段的表单错误令人困惑,因为*'ed out数据仍在其中.
我已经尝试了几种删除form.data的方法,但我不断收到This QueryDict instance is immutable异常消息.
是否有正确的方法来清除单个表单字段或整个表单数据集clean()?
关于不可变的QueryDict错误,您的问题几乎肯定是您已经创建了这样的表单实例:
form = MyForm(request.POST)
Run Code Online (Sandbox Code Playgroud)
这意味着form.data 是从POST变量创建的实际QueryDict.由于请求本身是不可变的,因此当您尝试更改其中的任何内容时会出现错误.在这种情况下,说
form.data['field'] = None
Run Code Online (Sandbox Code Playgroud)
是完全一样的
request.POST['field'] = None
Run Code Online (Sandbox Code Playgroud)
要获得一个可以修改的表单,您需要像这样构造它:
form = MyForm(request.POST.copy())
Run Code Online (Sandbox Code Playgroud)
如果您需要使用表单中的多个字段进行额外验证,请重写 .clean() 方法。但如果仅针对一个字段,您可以创建一个 clean_field_name() 方法。
http://docs.djangoproject.com/en/1.1/ref/forms/validation/#ref-forms-validation