2013-03-06 10 views
10

Mam Django 1.5 formularz, który wygląda tak (uproszczony):Django forms.ModelForm, pylint i nowy/stary styl klas

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

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

Kiedy biegnę pylint na to, otrzymuję ten błąd:

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

Zakładam, oznacza to, że Django forms.ModelForm jest klasą w starym stylu, a za tym python docs moje wezwanie do Super się nie dzieje, a zatem jest obcy. Czy to prawda? Czy mogę po prostu usunąć super połączenie bez efektu?

Odpowiedz

6

Ten błąd/ostrzeżenie nie ma nic wspólnego z klasą ModelForm i ma do czynienia z:

class Meta: 
     fields =() 
     model = Bid 

Trzeba tylko tłumić ostrzeżenie:

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

Albo możesz po prostu użyć klasy nowego stylu zamiast, np. 'Class Meta (obiekt): ', zgodnie z [ta odpowiedź] (http://stackoverflow.com/a/2007514/1226722). – gregoltsov

9

Nie. Pylint, mimo że jest świetny, jest daleki od niezawodności iw tym przypadku właśnie się pomylił. ModelForm to nowa klasa stylów i super jest potrzebna.

+0

Dzięki - Myślałem, że ModelForm był w nowym stylu i pomyślałem, że czegoś mi brakuje. Szkoda, że ​​Pylint nie ma sposobu na zgłoszenie problemów, ale nie mogę znaleźć sposobu, by to zrobić ... – Erik

+1

@Erik strona podręczna zawiera sekcję 'BUGS', która kieruje cię do' [email protected] org'. – wRAR

+0

Raporty błędów Pylint są teraz utrzymywane na Bitbucket. Otworzyłem problem dla tego: https://bitbucket.org/logilab/pylint/issue/24/e1002-message-for-djangoformsmodelform –