Pycharm не может автоматически завершить некоторые модули - PullRequest
0 голосов
/ 30 октября 2019

Pycharm работает хорошо в большинстве случаев. Но он не может автоматически завершить некоторый код.

Следующие «объекты» не могут быть завершены. Кто знает почему?

Я использую Pycharm Community Edition и 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 голосов
/ 31 октября 2019

Похоже, вы используете Django.
PyCharm Community Edition не предлагает автозаполнение на Django (я не использовал профессиональную версию).
Чтобы использовать автозаполнение PyCharm, вы должны использовать type hinting функция Python, доступная с 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

0 голосов
/ 31 октября 2019

Django является частью Professional Edition, поэтому вам нужно его завершить для работы. Смотри это

0 голосов
/ 31 октября 2019

Я нашел решение, оно работает на уровне объектов, глубокий уровень все еще не работает.

# 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)
0 голосов
/ 31 октября 2019

Иногда это происходит, если вы включили режим энергосбережения. Проверьте значок шляпы в правом нижнем углу.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...