10

次のようなDjango 1.5フォームがあります(簡略化):

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によると、スーパーへの呼び出しが行われていないため無関係であることを意味すると思います。これは本当ですか?スーパーコールを削除しても影響はありませんか?

4

2 に答える 2

9

いいえ。Pylintは素晴らしいですが、間違いのないものではありません。この場合、それは間違いです。ModelFormは新しいスタイルのクラスであり、スーパーが必要です。

于 2013-03-06T20:43:13.180 に答える
6

このエラー/警告は ModelForm クラスとは関係なく、以下と関係があります。

    class Meta:
        fields = ()
        model = Bid

警告を抑制するだけです。

    class Meta:  # pylint: disable=C1001
        fields = ()
        model = Bid
于 2013-09-28T22:57:43.880 に答える