【发布时间】:2026-01-09 17:50:02
【问题描述】:
我正在向我的 Django 应用程序中的表单和自定义字段添加自定义验证。我希望能够在触发错误时修改字段的值。例如,如果出现错误,应重新显示表单,并使用 clean() 更正的字段值和错误消息“数据已在下面更正。再次单击保存以确认这些更改是否正常”
我尝试过像这样在 clean_data[] 中返回修改后的数据,但它不起作用。它正确显示错误,但在重新显示表单时,字段值不会使用更正的 HTML 更新。
class T34AtividadeForm(ModelForm):
def clean(self):
# Return cleaned html
error,html = fix_imgs(cleaned_data.get("a34_descricao"))
if error:
msg = u'Data has been corrected below. Click save again to confirm if these changes are OK';
self._errors['a34_descricao'] = ErrorList([msg])
# This doesn't work
cleaned_data["a34_descricao"] = html
# This doesn't work either
self.a34_descricao = html
return cleaned_data
我也想对字段做同样的事情,但由于错误是由异常触发的,我没有机会返回更正后的值。和form clean()方法一样,错误显示正确,但是值没有更新。
class HTMLField(CharField):
widget = HTMLTextarea
def clean(self, value):
value = super(HTMLField,self).clean(value)
error,html = fix_imgs(value)
if error:
# This doesn't work
self.value = html
raise forms.ValidationError(u'Data has been corrected below. Click save again to confirm if these changes are OK.')
return html
【问题讨论】:
标签: django django-forms