Класс не имеет объектов

def index(request):
   latest_question_list = Question.objects.all().order_by('-pub_date')[:5]
   template = loader.get_template('polls/index.html')
   context = {'latest_question_list':latest_question_list}
   return HttpResponse(template.render(context, request))

Первая строка этой функции получает ошибку в Question.objects.all() - > E1101: Class 'Question has no objects member`

Im, следуя учебнику документации по Django, и у них есть тот же код, который работает и работает.

Я попытался вызвать экземпляр.

Question = new Question()
and using MyModel.objects.all()

Также мой код models.py для этого класса - это...

class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_date = models.DateTimeField('date published') 

def was_published_recently(self):
    return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

def __str__(self):
    return self.question_text

Безрезультатно, у меня все еще есть эта ошибка.

Я прочитал о pylint и запустил это...

pylint --load-plugins pylint_django

Что не помогло, даже в файле readme github говорится...

Предотвращает предупреждения о Django-сгенерированных атрибутах, таких как Model.objects или Views.request.

Я выполнил команду в моем виртуальном пространстве, но ничего.

Таким образом, любая помощь будет большой

Ответ 1

Установите pylint-django используя pip следующим образом

pip install pylint-django

Затем в коде Visual Studio перейдите: Пользовательские настройки (Ctrl + , или Файл> Настройки> Настройки, если они доступны). Введите следующее (обратите внимание на фигурные скобки, необходимые для пользовательских настроек в VSC):

{"python.linting.pylintArgs": [
     "--load-plugins=pylint_django"
],}

Ответ 2

@tieuminh2510 ответ идеален. Но в более новых версиях VSC вы не найдете опции для редактирования или вставки этой команды в настройках пользователя. Теперь в новой версии, чтобы добавить этот код, выполните следующие действия:

Нажмите ctr + sft + P, чтобы открыть палитру команд. Теперь в командной палитре введите Preferences: Configure специфичные для языка настройки. Теперь выберите Python. Вот в правой части вставьте этот код

"python.linting.pylintArgs": [
        "--load-plugins=pylint_django",
    ]

Внутри первые фигурные скобки. Убедитесь, что Пилинт-Джанго.

Надеюсь, это поможет!

Ответ 3

Вот ответ. Получился из моего сообщения reddit... https://www.reddit.com/r/django/comments/6nq0bq/class_question_has_no_objects_member/

Это не ошибка, это просто предупреждение от VSC. Джанго добавляет, что свойства динамически для всех классов моделей (он использует много магии под капотом), поэтому IDE не знает об этом, глядя на class, поэтому он предупреждает вас о возможной ошибке (это не так). объекты фактически являются экземпляром диспетчера, который помогает при запросе базы данных. Если вы действительно хотите избавиться от этого предупреждения, вы можете перейти ко всем своим модели и добавить объекты = models.Manager() Теперь VSC увидит объекты объявлены и больше не будут жаловаться на это.

Ответ 4

Вы можете изменить линтер для расширения Python для кода Visual Studio.

В VS откройте палитру команд Ctrl + Shift + P и введите одну из следующих команд:

Python: выберите Linter

при выборе линтера он будет установлен. Я попытался flake8, и, кажется, проблема решена для меня.

Ответ 5

Я перепробовал все возможные решения, но, к сожалению, мои настройки vscode не изменили путь к линтеру. Итак, я попробую изучить настройки vscode в settings> User Settings> python. Найдите Linting: Pylint Path и измените его на "pylint_django". Не забудьте поменять линтер на "pylint_django" в разделе настройки> Настройки пользователя> настройка python с "pyLint" на "pylint_django".

Linter Path Edit

Ответ 6

Сначала установите pylint-django, используя следующую команду

$ pip install pylint-django

Затем выполните вторую команду следующим образом:

$ pylint test_file.py --load-plugins pylint_django

--load-plugins pylint_django необходим для корректного просмотра кода django

Ответ 7

Выполняя Question = new Question() (я предполагаю, что new - опечатка), вы переписываете модель вопроса с intance Question. Как сказал Sayse в комментариях: не используйте одно и то же имя для своей переменной как имя модели. Поэтому измените его на что-то вроде my_question = Question().

Ответ 8

Как насчет подавления ошибок в каждой строке, специфичной для каждой ошибки?

Примерно так: https://pylint.readthedocs.io/en/latest/user_guide/message-control.html

Ошибка: [pylint] Класс 'class_name' не имеет члена 'member_name'. В этой строке его можно подавить следующим образом:

  # pylint: disable=no-member

Ответ 9

Поменяйте линтер на - flake8 и проблема исчезнет.

Ответ 10

Установите Django Pylint:

pip install pylint-django

ctrl + shift + p> Предпочтения: настройка параметров языка> Python

Файл settings.json, доступный для языка Python, должен выглядеть следующим образом:

{
    "python.linting.pylintArgs": [
        "--load-plugins=pylint_django"
    ],

    "[python]": {

    }
}

Ответ 11

Просто добавив к тому, что сказал @Mallory-Erik: Вы можете поместить objects = models.Manager() в модалы:

class Question(models.Model):
    # ...
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    # ...
    def __str__(self):
        return self.question_text
    question_text = models.CharField(max_length = 200)
    pub_date = models.DateTimeField('date published')
    objects = models.Manager()

Ответ 12

Если вы используете Python 3

python3 -m pip install pylint-django

Если python & lt; 3

python -m pip install pylint-django==0.11.1

ПРИМЕЧАНИЕ. Версия 2.0, требуется pylint> = 2.0, которая больше не поддерживает Python 2! (https://pypi.org/project/pylint-django/)