类没有对象成员。

233
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:类“Question”没有“objects”成员

我正在按照Django文档教程进行操作,他们的代码可以正常运行。 我已经尝试过调用一个实例。
Question = new Question()
and using MyModel.objects.all()

同时我的models.py文件中这个类的代码是这样的...

Translated text:

Also my models.py code for that class is this...

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 README 文件中提到:

可以防止有关 Django 生成的属性(例如 Model.objects 或 Views.request)的警告。

我在虚拟环境中运行了该命令,但仍然没有任何效果。

因此,如果能提供任何帮助,那将是非常好的。


7
使用 pylint --generated-members=objects 命令。 - Raja Simon
抱歉,我在我的命令提示符中运行它,但没有任何变化。 - buuencrypted
你的Python和Django版本是什么? - Gavin Achtemeier
1
版本 Python 3.6.0 和 Django 1.11.3 - buuencrypted
3
对我来说解决这个问题的办法是在models.py文件中创建一个Manager实例。有关更多信息,请参阅django文档 - Ikraj mohammad
显示剩余8条评论
18个回答

4

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

$ pip install pylint-django

然后执行以下第二条命令:

$ pylint test_file.py --load-plugins pylint_django

--load-plugins pylint_django是正确审查Django代码必需的


3

如果你使用的是Python 3

python3 -m pip install pylint-django

如果 Python < 3

python -m pip install pylint-django==0.11.1

注意:版本2.0需要pylint >= 2.0的支持,该版本不再支持Python 2!(https://pypi.org/project/pylint-django/)


3
首先,使用以下命令通过pip安装pylint-django: pip
pip install pylint-django

前往 settings.json,查找并确保 python linting enabled 设为 true ,如下所示:

enter image description here

在底部写入 "python.linting.pylintPath": "pylint_django",如下所示:

enter image description here

或者,
前往 Settings 并搜索 python linting
确保选择了 Python > Linting: Pylint Enabled 选项。
在该选项下方的 Python > Linting: Pylint Path 内输入 pylint_django

1
谢谢您,先生。这让我疯狂了,因为我尝试了所有其他答案建议的方法,但是直到我找到您的答案并阅读到我需要将pylint django路径添加到settings.json中,才解决了我的问题。“python.linting.pylintPath”:“pylint_django”, - luckyguy73

2

我安装了PyLint,但是出现了错误Missing module docstringpylint(missing-module-docstring)。所以我找到了这个答案,其中包含了用于pylint的配置:

"python.linting.pylintEnabled": true,
"python.linting.pylintArgs": [
    "--disable=C0111", // missing docstring
    "--load-plugins=pylint_django,pylint_celery",
 ],

现在它有效了


你确定这回答了所提出的问题吗? - anurag
我尝试安装pylint,第一个答案是pip install pylint-django,但之后我遇到了Missing module docstringpylint(missing-module-docstring)的问题。所以,我搜索并找到了这个链接,其中有一个适用于我的pylint配置。因此,我认为这补充了这个问题的答案。如果我做错了,请原谅,因为我是新手。 - lucrp
1
我改进了我的回答。如果还不够好,请指出来。 - lucrp

2

3
虽然这种解决方案很粗暴,但这是保持心智清醒的唯一途径。我在许多不同的模块上都遇到了这些错误,我不会每次看到新的错误就去更改设置。 - Przemek D

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

我的电脑配置可能有问题,导致 Django 和 Python 无法正常运行。但是我在 MacBook 上重新编码后,一切都很顺利。另外,我尝试了你的建议,但对我的代码没有任何影响。 - buuencrypted

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

0
只需在您的问题表中添加 objects = None。这对我解决了错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接