2017-09-07 1 views
0

CIEmailField(null=True)を使用するとPycharmが "unexpected argument"を表示しますが、CIEmailFieldOld(null=True)を使用しない場合は表示されません。 nullはまだ私が知る限り有効な議論です、なぜPycharmは私にこの警告を与えていますか?class mixinを使用すると、Pycharmがnull = Trueに対して "予期しない引数"と表示されます。

from django.db.models import * 

class CIText: 
    def db_type(self, connection): 
     return 'citext' 

class CIEmailField(CIText, EmailField): 
    pass 

class CIEmailFieldOld(EmailField): 
    def db_type(self, connection): 
     return 'citext' 

答えて

1

これはPycharmと継承チェーンに問題があるようです。 EmailFieldの継承に従うと、RegisterLookupMixinクラスになります。 FieldクラスからRegisterLookupMixinスーパークラスを削除すると、Pycharm構文エラーが取り除かれます。

+0

私はこれを試したところ、うまくいきました。 'CIEmailField'は実際にDjangoのソースコードの一部です:https://docs.djangoproject.com/en/1.11/_modules/django/contrib/postgres/fields/citext/これはバグとみなされます(機能に影響する)、またはそれは何か些細なことですか? – dtgq

+0

つまり、 'CIText' mixinは' __init__'を持たないので、 'EmailField'のinitは有効です(何も上書きしません)ので、IDEを除いて本当に重要なことはありません。 ? – dtgq

+0

あなたは正しいです、それはバグではありません。私は元のコードを誤解しました。これはパイチャの問題です。 –