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:类'问题has no 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生成的属性的警告,例如 Model.objects或Views.request。
我在virtualenv中运行了命令,但没有。
所以任何帮助都会很棒
答案 0 :(得分:212)
使用pylint-django
安装pip
,如下所示
pip install pylint-django
然后在Visual Studio代码中转到:用户设置( Ctrl + ,或文件>首选项>设置(如果有))放入以下(请注意VSC中自定义用户设置所需的花括号):
{"python.linting.pylintArgs": [
"--load-plugins=pylint_django"
],}
答案 1 :(得分:36)
@ tieuminh2510的答案是完美的。但是在新版VSC中,您将无法在用户设置中找到用于编辑或粘贴该命令的选项。 现在在较新的版本中添加该代码,请按照以下步骤:
按 ctr + sft + P 打开命令面板。现在,在命令面板中键入首选项:配置特定于语言的设置。 现在选择 Python 。在此处粘贴此代码
"python.linting.pylintArgs": [
"--load-plugins=pylint_django",
]
在第一个大括号内。 确保 pylint-django 。
希望这会有所帮助!
答案 2 :(得分:15)
继承人的答案。 来自我的reddit帖子...... https://www.reddit.com/r/django/comments/6nq0bq/class_question_has_no_objects_member/
这不是错误,只是来自VSC的警告。 Django补充说 动态属性到所有模型类(它使用了很多魔法 在引擎盖下),所以IDE通过查看它并不知道它 类声明,因此它会警告您可能出现的错误(它不是)。 对象实际上是一个帮助查询数据库的Manager实例。 如果你真的想摆脱那个警告你可以去你所有的 模型和添加对象= models.Manager()现在,VSC将会看到 声明的对象,不会再抱怨它。
答案 3 :(得分:7)
您可以为Visual Studio Code的Python扩展更改linter。
在VS中,打开命令面板Ctrl + Shift + P并键入以下命令之一:
Python:选择Linter
当您选择一个短绒时,它将被安装。我尝试了flake8,看来问题已经解决了。
答案 4 :(得分:5)
安装Django pylint:
pip install pylint-django
ctrl + shift + p>首选项:配置特定于语言的设置> Python
可用于python语言的settings.json如下所示:
{
"python.linting.pylintArgs": [
"--load-plugins=pylint_django"
],
"[python]": {
}
}
答案 5 :(得分:4)
我能够更新用户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"]
}
那为我解决了这个问题。
答案 6 :(得分:4)
更新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代码的settings.json
中。
但是在那之后,您会发现很多新的掉毛错误。然后,阅读此处的内容:
每当
python.linting.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
可以正常工作。
答案 7 :(得分:3)
我已经尝试了提供的所有可能的解决方案,但不幸的是,我的vscode设置不会更改其linter路径。因此,我尝试在设置>用户设置> python 中探索vscode设置。找到 Linting:Pylint路径,并将其更改为“ pylint_django”。别忘了在设置>用户设置> python配置中将短绒从“ pyLint”更改为“ pylint_django”。
答案 8 :(得分:2)
我安装了 PyLint,但出现错误 Missing module docstringpylint(missing-module-docstring)
。所以我在 pylint 的这个配置中找到了这个 answer :
"python.linting.pylintEnabled": true,
"python.linting.pylintArgs": [
"--disable=C0111", // missing docstring
"--load-plugins=pylint_django,pylint_celery",
],
现在可以使用了
答案 9 :(得分:2)
首先使用以下命令安装 pylint-django
$ pip install pylint-django
然后运行第二个命令,如下所示:
$ pylint test_file.py --load-plugins pylint_django
-需要加载插件pylint_django才能正确查看django代码
答案 10 :(得分:1)
如何在特定于每个错误的每一行上抑制错误?
类似这样的内容:https://pylint.readthedocs.io/en/latest/user_guide/message-control.html
错误:[pylint]类“ class_name”没有“ member_name”成员 可以通过以下方式在该行上将其抑制:
# pylint: disable=no-member
答案 11 :(得分:1)
首先,使用<xsl:template name="xsl:initial-template">
<greetings>
<xsl:for-each select="parse-json($input)?*">
<greeting msg="{?msg}" name="{?name}"/>
</xsl:for-each>
</greetings>
</xsl:template>
安装pylint-django
,如下所示:
pip
转到pip install pylint-django
查找并确保settings.json
是python linting enabled
像这样:
在底部写true
,如下所示:
OR
转到"python.linting.pylintPath": "pylint_django"
并搜索Settings
确保选中python linting
在Python > Linting: Pylint Enabled
下写Python > Linting: Pylint Path
答案 12 :(得分:1)
通过执行Question = new Question()
(我假设new
是拼写错误),您将使用Question
的内容覆盖问题模型。就像Sayse在评论中所说的那样:不要使用与变量相同的名称作为模型的名称。因此,将其更改为my_question = Question()
。
答案 13 :(得分:0)
将您的linter更改为- flake8 ,问题将消失。
答案 14 :(得分:0)
如果您使用python 3
python3 -m pip install pylint-django
如果python> 3
python -m pip install pylint-django
答案 15 :(得分:0)
当我使用pylint_runner时发生此问题
所以我要做的是打开.pylintrc文件并将其添加
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=objects
答案 16 :(得分:0)
只需添加@ 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()
答案 17 :(得分:0)
只需在您的Questions表中添加对象= None。那为我解决了错误。