Неразрешенный атрибут reference 'objects' для класса '' в PyCharm

Я использую community pycharm, а версия python - 3.6.1, django - 1.11.1. Это предупреждение не влияет на работу, но я не могу использовать автоматическое завершение IDE.

Ответ 1

Вам необходимо включить поддержку Django. Идти к

PyCharm → Настройки → Языки и рамки → Django

и затем установите Enable Django Support

Ответ 2

Вы также можете явно показать диспетчер модели по умолчанию:

from django.models import models

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

    objects = models.Manager()

Ответ 3

Платформы Python (Django, Flask и т.д.) Поддерживаются только в Professional Edition. Проверьте ссылку ниже для более подробной информации.

Сравнение выпусков PyCharm

Ответ 4

Используйте базовую модель для всех ваших моделей, которые предоставляют объекты:

class BaseModel(models.Model):
    objects = models.Manager()
    class Meta:
        abstract = True


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

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

Ответ 5

Другое решение, которое я нашел, это положить @python_2_unicode_compatible decorator на любую модель. Это также требует, чтобы у вас была 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

Ответ 6

Я нашел этот хакерский обходной путь, используя заглушки:

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, но избавляет от необходимости переопределять значение по умолчанию

Ответ 7

из selenium импорт вебдрайвер из webdriver_manager.chrome импортировать ChromeDriverManager импортировать юнит-тест

класс GoogleSearch (unittest.TestCase):

@classmethod
def setUpClass(cls):
    cls.driver.implicitly_wait(5)
    cls.driver.maximize_window()


@classmethod
def setUpClass(self):
    self.driver = webdriver.Chrome(ChromeDriverManager().install())
    self.driver.get("https://google.com")
    self.driver.find_element_by_name("q").send_keys("BT Plc")
    self.driver.find_element_by_name("btnK").click()

def setUpClass(self):
    self.driver.get("https://google.com")
    self.driver.find_element_by_name("q").send_keys("Nasir")
    self.driver.find_element_by_name("btnK").click()

@classmethod
def setUpClass(cls):
    cls.driver.close()
    cls.driver.quit()

print ("Тест завершен")

Выше кода выполняется только последняя строка "print (" Тест завершен ")" Может ли кто-нибудь помочь мне понять, почему часть класса не выполняется