【问题标题】:Django view only returning primary key from field to template, no dataDjango视图仅将主键从字段返回到模板,没有数据
【发布时间】:2018-12-15 22:56:27
【问题描述】:

我有一个模型,它在 Product 表中有一列类别,其中有一个条目“床”。

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

这是我的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')

【问题讨论】:

  • 您能否将xroduct 更正为您在那里使用的模型的实际名称?
  • product是什么字段?
  • @andreihondrari xroduct 不是错字。产品是我认为的文本字段。我正在编辑我的问题以显示定义 xroduct 的行。
  • 哦,等一下,这很奇怪。您基本上是在谈论 django-oscar,并且该模型具有“catalogue.product”的模型。 github.com/django-oscar/django-oscar/blob/master/src/oscar/apps/… 但该模型上不应该有“产品”字段...
  • 如果我错了,请纠正我,但在那个模板中,或者在那个页面上你真正想做的是列出所有产品?

标签: python django django-templates django-views django-oscar


【解决方案1】:

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

要从 oscar 检索模型,您需要使用 get_model,这是他们自己的动态导入感兴趣模型的实现。 get_modelhttps://github.com/django-oscar/django-oscar/blob/master/src/oscar/apps/catalogue/models.py 获取模型,这些模型由 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 %}

【讨论】:

  • 我不确定如何准确判断我正在使用的应用程序是哪种类型的现场产品,models.py 很复杂且不清楚,但我认为它是某种类型的文本字段。
猜你喜欢
  • 2017-04-30
  • 2013-03-13
  • 2011-07-28
  • 1970-01-01
  • 2013-01-21
  • 2020-03-19
  • 2019-02-16
  • 2016-05-15
  • 1970-01-01
相关资源
最近更新 更多