繁体   English   中英

Pycharm 无法自动完成某些模块

[英]Pycharm can't auto complete some modules

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)

在此处输入图像描述

省电模式已关闭。

在此处输入图像描述

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

在此处输入图像描述

Django 是专业版的一部分,因此您需要它才能完成工作。 看到这个

我找到了一个解决方案,它适用于对象级别,深层仍然不起作用。

# 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)

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

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的作者

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM