2013-03-06 4 views
10

Ich habe eine Django 1.5 Formular, das wie folgt aussieht (vereinfacht):Django forms.ModelForm, Pylint und neuen/alten Stil Klassen

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

    def __init__(self, *args, **kwargs): 
     super(BidForm, self).__init__(*args, **kwargs) 
     something() 

Als ich Pylint auf diese laufen lasse, erhalte ich einen dieser Fehler:

E1002:<line,row>:BidForm.__init__: Use of super on an old style class 

ich nehme an, das das Djangos forms.ModelForm ist eine im alten Stil Klasse bedeutet und je den python docs meinen Aufruf von super geschieht nicht und ist daher fremd. Ist das wahr? Kann ich den Super-Anruf einfach ohne Wirkung löschen?

Antwort

6

Dieser Fehler/Warnung hat nichts mit der Modelform Klasse zu tun und hat damit zu tun:

class Meta: 
     fields =() 
     model = Bid 

Sie müssen nur die Warnung unterdrücken:

class Meta: # pylint: disable=C1001 
     fields =() 
     model = Bid 
+6

Oder Sie können nur die neue-Stil-Klasse statt, dh 'Klasse Meta (Objekt): ', nach [dieser Antwort] (http://stackoverflow.com/a/2007514/1226722). – gregoltsov

9

Nein. Pylint, groß, aber es ist weit davon entfernt, unfehlbar, und in diesem Fall hat es nur falsch verstanden. ModelForm ist eine neue Stilklasse und der Super wird benötigt.

+0

Danke - ich dachte, dass Modelform war neu und dachte mir, ich habe gerade etwas vermisst. Ich wünschte, Pylint hätte einen Weg, Probleme zu stellen, aber ich finde keinen Weg, dies zu tun ... – Erik

+1

@Erik Die Manpage hat einen 'BUGS'-Abschnitt, der dich zu' [email protected] leitet. org'. – wRAR

+0

Pylint Fehlerberichte sind jetzt auf Bitbucket gepflegt. Ich habe ein Problem für dieses geöffnet: https://bitbucket.org/logilab/pylint/issue/24/e1002-message-for-djangoformsmodelform –