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中运行了这个命令,但是什么都没有。

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


当前回答

我已经尝试了所有可能的解决方案,但不幸的是,我的vscode设置不会改变它的linter路径。所以,我尝试在settings > User settings > python中探索vscode设置。找到Linting: Pylint Path并将其更改为“pylint_django”。不要忘记在>用户设置> python配置中将linter从“pyLint”改为“pylint_django”。

其他回答

你可以为Visual Studio Code更改Python扩展的linter。

在VS中打开命令面板Ctrl+Shift+P,输入以下命令之一:

Python:选择Linter

当你选择一个linter,它将被安装。我试过flake8,似乎问题解决了。

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

pip install pylint-django

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

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

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

$ pip install pylint-django

然后执行第二条命令。

$ pylint test_file.py --load-plugins pylint_django

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

更新vs code 1.40.0

后做的事情:

$ pip install pylint-django

点击这个链接:https://code.visualstudio.com/docs/python/linting#_default-pylint-rules

注意,让pylint考虑pylint-django的方法是指定:

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

在设置中。VS Code的json。

但在此之后,您将注意到许多新的检测错误。然后,看看上面写了什么:

当python.lint . pylintuseminimalcheckers被设置为true(默认值)时,这些参数将被传递。如果你在pylintArgs中指定一个值,或者使用Pylint配置文件(参见下一节),那么pylintUseMinimalCheckers将隐式设置为false。

我所做的就是像链接中描述的那样创建一个.pylintrc文件,然后在文件中配置以下参数(保持文件的其余部分不变):

load-plugins=pylint_django

disable=all

enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode

现在pylint可以正常工作了。

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

pip install pylint-django

转到设置。Json查找并确保python linting enabled为true 是这样的:

在底部写上“python.linting”。pylintPath": "pylint_django":

OR,

进入设置,搜索python linting

确保Python > Linting: Pylint Enabled被选中

在Python > Linting: Pylint路径下写入pylint_django