Django forms.ModelForm,Pylint和new/old style类

Eri*_*rik 10 python django pylint

我有一个看起来像这样(简化)的Django 1.5表单:

class BidForm(forms.ModelForm):
    class Meta:
        fields = (
        )
        model = Bid

    def __init__(self, *args, **kwargs):
        super(BidForm, self).__init__(*args, **kwargs)
        something()
Run Code Online (Sandbox Code Playgroud)

当我在这上面运行Pylint时,我收到一个错误:

E1002:<line,row>:BidForm.__init__: Use of super on an old style class
Run Code Online (Sandbox Code Playgroud)

我认为这意味着Django的forms.ModelForm是一个旧式的类,根据python docs,我对super的调用没有发生,因此是无关紧要的.这是真的?我可以删除超级通话而不起作用吗?

Dan*_*man 9

不,Pylint虽然很棒,但远非绝对不可靠,而且在这种情况下错了.ModelForm是一个新的样式类,需要super.


Fre*_*die 6

此错误/警告与ModelForm类无关,与以下内容有关:

    class Meta:
        fields = ()
        model = Bid
Run Code Online (Sandbox Code Playgroud)

你只需要压制警告:

    class Meta:  # pylint: disable=C1001
        fields = ()
        model = Bid
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以使用新式的类,即`class Meta(object):`,根据[this answer](http://stackoverflow.com/a/2007514/1226722). (6认同)