【问题标题】:Override ModelForm is_valid function覆盖 ModelForm is_valid 函数
【发布时间】:2014-03-21 10:01:32
【问题描述】:

我想使用 CSS 为我的表单提供更好的反馈。我已经在这样做了,但这只是一个干净的代码问题。我有很多ModelForms,我希望它们都以相同的方式运行,所以我认为应该有一种方法可以避免重复验证代码。

我创建了一个覆盖ModelForm的新类

class ModelFormCSS(forms.ModelForm):
    def is_valid(self):
        # run the parent validation first
        valid = super(-->ParentModelForm<--, self).is_valid()

        if not valid:
            for f_name in self.errors:
                classes = self.fields[f_name].widget.attrs.get('class', '')
                if not "errors" in classes:
                    classes += ' errors'
                    self.fields[f_name].widget.attrs['class'] = classes
            return valid

        # all good
        return True

我的问题在于运行父验证,因为我不知道如何获取父表单...没有任何方法可以从 self 获取它吗?

【问题讨论】:

  • 错误的“css”标签

标签: css django error-handling overriding django-validation


【解决方案1】:

您误解了 Python 中继承的工作原理。在 super 方法中,您必须始终调用 current 类:

valid = super(ModelFormCSS, self).is_valid()

【讨论】:

  • 从 Python 3 开始,你可以简单地使用super()
猜你喜欢
  • 2016-03-20
  • 1970-01-01
  • 2012-04-10
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
  • 1970-01-01
相关资源
最近更新 更多