Django视图/模板 - 仅从模型

时间:2016-05-19 13:11:34

标签: python django

我有一个大约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>

3 个答案:

答案 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()

请参阅文件,尤其是第一段......

https://docs.djangoproject.com/en/1.9/ref/models/querysets/