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_model
从 https://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 %}
我有一个模型,它在产品 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_model
从 https://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 %}