2011-05-23 16 views
0

以前我有一個表中的客戶端摘要列表。在一列中,我有一個對象類型列表,在另一列中,我有這個對象類型的數量。Django想要統計不同的項目類型

@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> 

現在,這將工作,但有一個問題。我之前並不知道用戶可以從我的Web應用程序的表單中添加他們自己的存儲對象。如果他們嘗試添加一個新的對象類型,它將不會顯示在我的客戶端摘要中,除非我在視圖中傳遞一個模板中的變量來顯式編寫一個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

如果您需要顯示每個標籤的項目信息,可以使用regroup標籤。如果您只需要數量,請使用Count聚合函數。