我有一个大约20个字段的模型,其中从特定的视图我只需要返回两个字段,' location'并且' id'。 (如果我只传递两个字段而不是全部20个字段,我会在展示资源下保存)
我的代码和错误如下,我假设我没有看到此错误,因为我没有发送任何数据?
由于
views.py
def showroom_list(request):
modelShowrooms = ShowroomConfigData.objects.values_list('location', 'id')
return render(request, 'service/showrooms.html', {
'Showrooms': modelShowrooms,
})
showrooms.html
{% extends 'home/base-wide.html' %}
{% block content %}
<div id='content-body'>
{% include 'service/sidebar.html' %}
<div class="float-left">
{% for item in Showrooms %}
<a href="{% url 'service:showroom_detail' item.id %}">{{ item.location }}</a>
{% endfor %}
</div>
</div>
{% endblock %}
错误:
Reverse for 'showroom_detail' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'service/showroom/?P<question_id>[0-9]+$']
在线:
<a href="{% url 'service:showroom_detail' item.id%}">{{ item.location }}</a>
答案 0 :(得分:2)
如果您只想获取ID和位置字段,可以使用only()
。这仍然会返回模型实例。
modelShowrooms = ShowroomConfigData.objects.only('location')
您无需指定主键id
。
确保包含所有字段名称。如果您访问未包含在字段名称列表中的字段,则Django将执行新查询以获取该值。
答案 1 :(得分:1)
values_list
只会为您提供包含这些值的tuples
列表。您无法使用该权限访问item.id
等。
您需要获取元组的元素:
{% for location, item_id in Showrooms %}
<a href="{% url 'service:showroom_detail' item_id %}">{{ location }}</a>
{% endfor %}
而且,您还要访问showroom
中不存在的value_list
。我想你想要location
。
答案 2 :(得分:0)
在大多数语言中,您可以这样做:
for k,v in list:
print v
所以,
{% for location, id in Showrooms %}
<a href="{% url 'service:showroom_detail' id %}">
{{ item.showroom}}
</a>
{% endfor %}
正如人们提到的,values_list返回值列表。所以,
print modelShowrooms
在django中,循环列表有很多种方法。 all(),values(),get_values()
请参阅文件,尤其是第一段......