web-dev-qa-db-ja.com

PyCharmのクラス ''の未解決の属性参照 'オブジェクト'

コミュニティpycharmを使用し、pythonは3.6.1、Djangoは1.11.1です。この警告は実行には影響しませんが、使用できません。 IDEのオートコンプリート。

37
zhiang.shi

Djangoサポートを有効にする必要があります。

PyCharm->設定->言語とフレームワーク-> Django

そして、Enable Django Support

65
vishes_shell

デフォルトのモデルマネージャーを明示的に公開することもできます。

from Django.models import models

class Foo(models.Model):
    name = models.CharField(max_length=50, primary_key=True)

    objects = models.Manager()
8
Campi

Pythonフレームワーク(Django、Flaskなど)は、Professional Editionでのみサポートされています。詳細については、以下のリンクを確認してください。

PyCharmエディションの比較

3
winux

私が見つけた別の解決策は、任意のモデルに@ python_2_unicode_compatibleデコレータを配置することです。また、strあなたの関数を実装する必要があります

例えば:

# models.py

from Django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible
class SomeModel(models.Model):
    name = Models.CharField(max_length=255)

    def __str__(self):
         return self.name
1
Yarh

スタブファイルを使用して、このハッキングの回避策を見つけました。

models.py

from Django.db import models


class Model(models.Model):
    class Meta:
        abstract = True

class SomeModel(Model):
    pass

models.pyi

from Django.db import models

class Model:
    objects: models.Manager()

これにより、PyCharmのコード補完が有効になります: enter image description here

これはCampiのソリューションに似ていますが、デフォルト値を再宣言する必要がありません

0

オブジェクトを公開するすべてのモデルにベースモデルを使用します。

class BaseModel(models.Model):
    objects = models.Manager()


class Model1(BaseModel):
    id = models.AutoField(primary_key=True)

class Model2(BaseModel):
    id = models.AutoField(primary_key=True)
0
Joseph Bani