【问题标题】:Django form: restore predefined field value in clean methodDjango 表单:在 clean 方法中恢复预定义的字段值
【发布时间】:2016-09-16 07:59:29
【问题描述】:

在我的 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 而没有返回cleaned_data。我怎样才能做到这一点?

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    事实证明,您可以通过self.data 访问字段的值。所以我最终做了self.data['foo'] = self.instance.foo,现在它正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2013-04-20
      • 2016-04-29
      • 2012-04-15
      相关资源
      最近更新 更多