如何在Django 2.0的clean方法中覆盖实例/表单值



如何在Django 2.0的干净方法中覆盖实例/表单值?

类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方法中这样做的原因是这样我就可以在表单中引发验证错误

使用模型的保存方法是可行的,但引发验证错误不会在django模板中的表单上显示错误。

覆盖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并呈现带有错误的表单。

最新更新