Я добавляю настраиваемую проверку к моим формам и настраиваемым полям в моем приложении 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
Я также хотел бы сделать то же самое с полем, но, поскольку ошибки вызываются исключением, у меня нет возможности вернуть исправленное значение. Как и в методе 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