Pycharm无法自动完成某些模块

时间:2019-10-30 12:47:54

标签: python django pycharm

Pycharm在大多数时候都运作良好。但是它无法自动完成一些代码。

以下“对象”无法完成。谁知道为什么?

我使用Pycharm社区版和Django 2.2

class SnippetList(APIView):
    """
    List all snippets, or create a new snippet.
    """

    def get(self, request):
        snippets = Snippet.objects.all()  # The objects can't be auto completed.
        serializer = SnippetSerializer(snippets, many=True)
        return Response(resp)

enter image description here

省电模式已关闭。

enter image description here

4 个答案:

答案 0 :(得分:0)

如果启用了“省电模式”,有时会发生这种情况。检查右下角的帽子图标。

enter image description here

答案 1 :(得分:0)

Django是专业版的一部分,因此您需要它才能完成工作。 参见this

答案 2 :(得分:0)

我找到了一个解决方案,它在对象级别有效,但在深度级别仍然无效。

# pip install django-stubs

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

    class Meta:
        abstract = True

class Snippet(BaseModel):

    created = models.DateTimeField(auto_now_add=True)

答案 3 :(得分:0)

似乎您正在使用Django。
PyCharm社区版在Django上不提供自动补全功能(我还没有使用专业版)。
要使用PyCharm自动完成功能,您必须使用python的type hinting功能(可从python3.5获得)以及python3.6上添加的其他一些功能。
您可以使用django-hint模块来帮助您进行类型提示。
例如,如果您以这种方式编写模型:

from django.db import models
from django_hint import StandardModelType

class Snippet(models.Model, StandardModelType):
    """Just like any other model"""
    pass
继承自StandardModelType

,在进行查询时,将提供objects作为自动完成功能。 StandardModelType不会影响您的数据库,也不会创建迁移。
请注意,您需要python3.6或更高版本才能使用django-hint

免责声明:我是django-hint

的作者