覆盖ModelForm is_valid函数

德纳兰霍

我想使用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吗?

丹尼尔·罗斯曼

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章