Django想要计算不同的项目类型

时间:2011-05-23 10:22:11

标签: python html django tags count

以前我在表格中有一个客户端摘要列表。在一列中,我有一个对象类型列表,在另一列中,我有该对象类型的数量。

@login_required
def client_summary(request, client_id):
    client = models.Client.objects.get(pk = client_id)
    items = client.storageitem_set.all()
    tape_and_film_items = client.storageitem_set.filter(type="1")
    total_tape_and_film_items = tape_and_film_items.count()
    electrical_equipment_items = client.storageitem_set.filter(type="2")
    total_electrical_equipment_items = electrical_equipment_items.count()
    storage_office_equipment_items = client.storageitem_set.filter(type="3")
    total_storage_office_equipment_items = storage_office_equipment_items.count()


<table cellspacing="15" style="float: left">
<tr><th scope="col">Type</th><th scope="col">Quantity</th></tr>
</tr><td>Tape + Film</td><td align="center">{{total_tape_and_film_items}}</td></tr>
</tr><td>Electrical Equipment</td><td align="center">{{total_electrical_equipment_items}}</td></tr>
</tr><td>Storage Office Equipment</td><td align="center">{{total_storage_office_equipment_items}}</td></tr>
</table>

现在这可行,但有一个问题。我之前不知道用户可以在我的网络应用程序中添加自己的存储对象。如果他们尝试添加新的对象类型,它将不会显示在我的客户端摘要中,除非我在视图中在模板中传递变量时明确地写了一个django查询。如果没有表单可以添加对象类型,那就可以了。

所以在我的模板中,我现在在类型列中有这个。这部分将起作用,因为我真正需要做的就是列出所有存储项目对象,无论客户端是谁。

views.py

item_type = models.StorageObject.objects.all()

模板

 {% for item in item_type %}
     {{item.title}}
 {% endfor %}

但是在数量栏中我似乎无法计算。什么都不返回。

{% for item in items %}
    {{item.type.count}}
{% endfor %}

1 个答案:

答案 0 :(得分:1)

如果您需要为每个代码显示一些项目信息,可以使用regroup代码。如果您只想要数量,请使用Count聚合函数。