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()上得到一个错误:

类“Question”没有“objects”成员

我正在跟随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

这并没有帮助,即使github自述文件说…

防止关于django生成的属性的警告 模型。objects或Views.request。

我在virtualenv中运行了这个命令,但是什么都没有。

所以任何帮助都是最好的。


当前回答

如何抑制每行特定于每个错误的错误?

就像这样:https://pylint.readthedocs.io/en/latest/user_guide/message-control.html

错误:类'class_name'没有'member_name'成员 它可以被抑制在这一行:

  # pylint: disable=no-member

其他回答

通过执行Question = new Question()(我假设new是一个拼写错误),您正在用一个Question实例覆盖Question模型。就像Sayse在评论中说的:不要使用与模型名称相同的变量名。因此,将其更改为my_question = Question()。

这就是答案。 从我的reddit帖子… https://www.reddit.com/r/django/comments/6nq0bq/class_question_has_no_objects_member/

That's not an error, it's just a warning from VSC. Django adds that property dynamically to all model classes (it uses a lot of magic under the hood), so the IDE doesn't know about it by looking at the class declaration, so it warns you about a possible error (it's not). objects is in fact a Manager instance that helps with querying the DB. If you really want to get rid of that warning you could go to all your models and add objects = models.Manager() Now, VSC will see the objects declared and will not complain about it again.

首先使用以下命令安装pylint-django

$ pip install pylint-django

然后执行第二条命令。

$ pylint test_file.py --load-plugins pylint_django

——load-plugins pylint_django是正确检查django代码的必要条件

使用pip安装pylint-django,如下所示

pip install pylint-django

然后在Visual Studio Code转到:用户设置(Ctrl +,或File > Preferences > Settings,如果可用)输入以下内容(请注意花括号,这是VSC中自定义用户设置所必需的):

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

我能够更新用户settings.json

在我的mac上,它存储在:

~/Library/Application Support/Code/User/settings.json

在其中,我设置了以下内容:

{
    "python.linting.pycodestyleEnabled": true,
    "python.linting.pylintEnabled": true,
    "python.linting.pylintPath": "pylint",
    "python.linting.pylintArgs": ["--load-plugins", "pylint_django"]
}

这为我解决了问题。