2012-03-09 60 views
0

我正在使用django-taggit標記待辦事項列表應用中的項目。添加計數值以設置

我想列出各個標籤以及與每個標籤相關聯的操作數一起,以便它可以讀取:

Tag A (1) 
Tag B (3) 
Tag C (2) 

標籤的有1項,標籤B有3等

我向django-taggit添加了一個布爾型字段。所以,現在我得到的標籤像這樣的列表:像這樣

visible_tags = Tag.objects.filter(visible=True).order_by('name') 
hidden_tags = Tag.objects.filter(visible=False).order_by('name') 

我能得到的項目(行動)計數:

for tag in visible_tags: 
    print tag 
    print Action.objects.filter(tags__name__in=[tag]).count() 

現在我想這些計數附加到visible_tags和hidden_​​tags設置,這樣我可以在這樣的模板在它們之間迭代:

{% for tag in visible_tags %} 
    {{ tag }} ({{ tag.count }})<br> 
{% endfor %} 

我怎麼能把visible_tags內hidden_​​tags內的.Count之間的值,每個標籤?我想我必須遍歷每個集合中的所有標籤?

回答

0

使用註釋:https://docs.djangoproject.com/en/dev/topics/db/aggregation/

from django.db.models import Count 

Tag.objects.annotate(action_count=Count('action')) 

(您可能需要調整這一點我猜對相關名稱Action)。

+0

這就是我想,但我不認爲聚集與Django-Taggit合作? http://django-taggit.readthedocs.org/en/latest/api.html#aggregation – JamesO 2012-03-09 15:02:01

+0

它可能。所記錄的問題具有相反的關係,即,如果OP想要對'Action'上的標籤進行計數:'Action.objects.annotate(Count('tags'))'。 – 2012-03-09 15:23:06