如何在Django 2.0的干净方法中覆盖实例/表单值?
Class LocationForm(forms.ModelForm):
def clean(self):
# do some work
if check_condition:
raise ValidationError
# pass validation checks
# overwrite new field value
instance.field = new_val
被覆盖的字段应该被覆盖并在新的模型实例中生效。
我想在clean方法中执行此操作的原因是,这样我就可以在表单中引发验证错误。
使用模型的save方法有效,但引发验证错误并不会在Django模板中的表单上呈现错误。
答案 0 :(得分:0)
覆盖clean
方法,然后更新cleaned_data
。
def clean(self):
self.cleaned_data = super().clean()
self.cleaned_data['field'] = value
return self.cleaned_data
您也可以在此处添加表格错误。像self.add_error('field', 'error message')
这样会为您举起ValidationError
并导致表单出现错误。