gpt4 book ai didi

django - 在 clean() 期间修改 Django 表单字段的值

转载 作者:行者123 更新时间:2023-12-03 11:29:58 26 4
gpt4 key购买 nike

我正在向我的 Django 应用程序中的表单和自定义字段添加自定义验证。我希望能够在触发错误时修改字段的值。例如,如果出现错误,应重新显示表单,其中字段值已通过 clean() 更正,并显示错误消息“下面的数据已更正。再次单击保存以确认这些更改是否正确”

我试过像这样在cleaned_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

最佳答案

在 clean 方法中更改 self 数据以更改显示的值

关于django - 在 clean() 期间修改 Django 表单字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654380/

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