2013-03-06 8 views
10

मैं एक Django 1.5 प्रपत्र (सरलीकृत) है कि इस तरह दिखता है:Django forms.ModelForm, Pylint, और नए/पुरानी शैली कक्षाओं

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

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

जब मैं इस पर Pylint चलाने के लिए, मैं एक यह त्रुटि प्राप्त:

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

मैं इसका मतलब यह है Django के forms.ModelForm पुराने तरीके का वर्ग है और सुपर नहीं हो रहा है के लिए प्रति python docs मेरे कॉल और इसलिए बाहरी है मान लेते हैं। क्या ये सच है? क्या मैं बिना किसी प्रभाव के सुपर कॉल को हटा सकता हूं?

उत्तर

6

यह त्रुटि/चेतावनी ModelForm वर्ग के साथ कोई संबंध नहीं है और के साथ क्या करना है:

class Meta: 
     fields =() 
     model = Bid 

तुम सिर्फ चेतावनी को दबाने के लिए की जरूरत है:

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

या आप इसके बजाय केवल नई शैली के वर्ग का उपयोग कर सकते हैं, यानी 'कक्षा मेटा (वस्तु): ', [इस उत्तर] के अनुसार (http://stackoverflow.com/a/2007514/1226722)। – gregoltsov

9

नहीं। पिलिंट, हालांकि यह महान है, अचूक है, और इस मामले में अभी यह गलत है। मॉडलफॉर्म एक नई स्टाइल क्लास है और सुपर की आवश्यकता है।

+0

धन्यवाद - मुझे लगता है कि सोचा था कि ModelForm नई शैली थी और मुझे लगा कि मैं बस कुछ खो रहा था। मेरी इच्छा है कि पिलिंट को मुद्दों को प्रस्तुत करने का कोई तरीका हो, लेकिन मुझे ऐसा करने का कोई तरीका नहीं दिख रहा है ... – Erik

+1

@Erik मैनपेज में 'बुग्स' अनुभाग है जो आपको '[email protected]' पर निर्देशित करता है। org'। – wRAR

+0

अब बिटकबेट पर पिलिंट बग रिपोर्ट्स बनाए रखी जाती हैं। मैंने इस के लिए एक मुद्दा खोला है: https://bitbucket.org/logilab/pylint/issue/24/e1002-message-for-djangoformsmodelform –

संबंधित मुद्दे