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

时间:2018-11-15 22:26:38

标签: django django-models django-forms

如何在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模板中的表单上呈现错误。

1 个答案:

答案 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并导致表单出现错误。