未解析的属性引用'对象'为课堂''在PyCharm

时间:2017-05-09 09:22:42

标签: python django pycharm

我使用社区pycharm,python的版本是3.6.1,django是1.11.1。此警告对运行没有影响,但我无法使用IDE自动完成。

6 个答案:

答案 0 :(得分:54)

您需要启用Django支持。转到

  

PyCharm - >偏好 - >语言与框架 - > Django

然后检查 Enable Django Support

答案 1 :(得分:7)

您还可以显式公开默认模型管理器:

from django.models import models

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

    objects = models.Manager()

答案 2 :(得分:3)

仅在专业版中支持Python框架(Django,Flask等)。 请查看下面的链接以获取更多详细信息。

PyCharm Editions Comparison

答案 3 :(得分:0)

我找到的另一个解决方案是在任何模型上放置@ 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

答案 4 :(得分:0)

我发现了使用存根文件的这种变通方法:

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的解决方案,但避免了需要重新声明默认值

答案 5 :(得分: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)