Django 视图仅将主键从字段返回到模板,没有数据

Django view only returning primary key from field to template, no data

我有一个模型,它在产品 table 中有一个类别列,其中有一个条目 'beds'。

当我尝试获取类别或产品列表(所有这些都有名称、描述等)时,我唯一能返回的是数字。

这是我的相关观点 views.py

def product(request):
    template = loader.get_template('/home/user/webapps/webapp/my_site/main_page/templates/main_page/product.html')
    prods = xroduct.objects.values_list('product')
    context={'prods': prods}
    return HttpResponse(template.render(context))

这是我在 django 模板中显示数据的代码

{% for instance in prods %}
    <li>{{ instance }}</li>
{% endfor %}

但是,在查看网页时 HTML 返回的所有内容是:

<li>(2,)</li>
<li>(1,)</li>

返回的信息应该更多。名称、描述等。为什么我的视图没有返回这些信息?

编辑:xroduct 的定义方式:

from oscar.core.loading import get_class, get_model

xroduct = get_model('catalogue', 'product')

既然我们在谈论 django-oscar,那么有很多事情需要理解:

要从 oscar 检索模型,您需要使用 get_model,这是他们自己动态导入感兴趣模型的实现。 get_modelhttps://github.com/django-oscar/django-oscar/blob/master/src/oscar/apps/catalogue/models.py whic are defined by https://github.com/django-oscar/django-oscar/blob/master/src/oscar/apps/catalogue/abstract_models.py

获取模型

如果您想列出产品及其信息,您需要做的是:

from oscar.core.loading import get_model

Product = get_model("catalogue", "Product")

def list_products(request):
    template = loader.get_template(...)
    products = Product.objects.all()
    context = {"products": products}
    return HttpResponse(template.render(context))

在模板中,您可以简单地访问以下实例:

{% for instance in prods %}
    <li>{{ instance.title }}</li>
{% endfor %}