Django形式:在clean方法中恢复预定义的字段值

时间:2016-09-16 07:59:30

标签: python django django-forms

在我的Django表单中,我需要执行不同的字段值比较(+一些额外的检查)。如果满足所有这些条件,我想提出错误并通知用户他无法执行此操作。现在我在clean方法中执行此操作,代码如下所示:

        if self.instance.foo != cleaned_data['foo'] and \
            Bar.objects.filter(baz=self.instance.id).count():
        cleaned_data['foo'] = self.instance.foo
        raise forms.ValidationError("You can't change it")

这工作正常,但我也想拒绝更改并恢复以前的值(更新前)。赋值cleaned_data['foo'] = self.instance.foo显然不起作用,因为由于引发ValidationError而未返回cleaning_data。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

原来你可以访问字段'价值来自self.data。所以我最终做了self.data['foo'] = self.instance.foo并且现在正在工作。