2013-03-06 21 views
10

Tôi có một Django 1,5 hình thức trông như thế này (giản thể):Django forms.ModelForm, pylint, và phong cách mới/cũ lớp

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

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

Khi tôi chạy pylint về vấn đề này, tôi nhận được một lỗi này:

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

tôi giả sử điều này có nghĩa forms.ModelForm của Django là một lớp học kiểu cũ và theo python docs cuộc gọi của tôi đến siêu không xảy ra và do đó không liên quan. Điều này có đúng không? Tôi có thể xóa siêu cuộc gọi mà không có hiệu lực không?

Trả lời

6

Lỗi này/cảnh báo không có gì để làm với các lớp ModelForm và đã làm với:

class Meta: 
     fields =() 
     model = Bid 

Bạn chỉ cần để ngăn chặn các cảnh báo:

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

Hoặc bạn chỉ có thể sử dụng lớp kiểu mới thay vào đó, tức là 'lớp Meta (đối tượng): ', theo [câu trả lời này] (http://stackoverflow.com/a/2007514/1226722). – gregoltsov

9

Không. Pylint, tuyệt vời mặc dù nó ở xa, không thể sai được, và trong trường hợp này đã sai. ModelForm là một lớp phong cách mới và siêu là cần thiết.

+0

Cảm ơn - Tôi nghĩ rằng ModelForm có phong cách mới và tôi đã chỉ thiếu một cái gì đó. Tôi muốn Pylint có một cách để gửi các vấn đề, nhưng tôi dường như không thể tìm cách để làm như vậy ... – Erik

+1

@Erik manpage có phần 'BUGS' hướng bạn đến' [email protected] org'. – wRAR

+0

Báo cáo lỗi Pylint hiện được duy trì trên Bitbucket. Tôi đã mở một vấn đề cho điều này: https://bitbucket.org/logilab/pylint/issue/24/e1002-message-for-djangoformsmodelform –