类没有“对象”成员

时间:2019-10-06 07:06:32

标签: django python-3.x django-models

因此,我在Django中是新手,并且正在尝试建立一个小市场。我做了一个产品应用程序。这是内部代码: 这是给views.py的:

from django.shortcuts import render
from django.http import HttpResponse
from products.models import product


def index(request):
  Products = product.objects.all()
  return render(request, 'index.html', {'products': Products})

def new(request):
  return HttpResponse('New Product')

这是用于models.py:

from django.db import models


class product(models.Model):
  name = models.CharField(max_length=150)
  price = models.FloatField()
  stock = models.IntegerField()
  image_url = models.CharField(max_length=2083)

我还制作了一个模板文件夹,并将其放入其中进行实验:

<h1>Products</h1>
<ul>
  {% for product in Products %}
    <li>{{ product.name }}</li>
  {% endfor %}
</ul>

和其他一些常规代码。但我在这部分出现了一个pylint错误:

product.objects.all()

请帮助我!谢谢

4 个答案:

答案 0 :(得分:1)

添加到settings.json文件中后出现错误的人添加

enter code here
"python.linting.pylintArgs": [
    "--load-plugins=pylint_django",
    "--errors-only" 
],

答案 1 :(得分:0)

尝试一下 使用pylint --generation-members = objects

安装Django pylint:

pip install pylint-django

ctrl + shift + p>首选项:配置特定于语言的设置> Python

可用于python语言的settings.json如下所示:

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

    "[python]": {

    }
}

答案 2 :(得分:0)

这是因为PyLint对提供objects属性的Django元类一无所知。无论如何,您的E1101 error只是警告,您可以禁用它或使用特殊的pylint-django插件使PyLint知道Django的魔力。

您的代码的另一个问题是传递给render调用的上下文使用不正确:

return render(request, 'index.html', {'products': Products})

Context是一个python dictionary对象,其中value可通过key在模板中访问。您正在通过products键传递查询集,但是遍历未设置的模板中的Products(请记住第一个大写字母)键,因此您的模板将不会呈现任何内容。

答案 3 :(得分:0)

还有另一个选项:~/.pylintrc 并编辑以下行:

load-plugins=

并在其中添加 django 插件:

load-plugins=pylint_django

当然需要先安装:

python3 -m pip install pylint_django