2012-03-09 6 views
0

django-taggit을 사용하여 할 일 목록 앱의 항목에 태그를 답니다.집합에 카운트 값을 더함

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

태그 A를 가지고 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 이러한 카운트를 첨부 할 그래서 지금 이런 태그 목록을 받고 있어요

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

가 어떻게 visible_tags 내에서 hidden_tags 내의 각 태그에 .count 값을 첨부 할 수 있습니다 :이 같은 템플릿에이를 반복 할 수 있도록하고 hidden_tags 설정? 각 세트의 모든 태그를 반복해야한다고 가정합니다.

답변

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

+0

가능성이 있습니다. 문서화 된 문제는 반대의 관계, 즉 OP가'Action' :'Action.objects.annotate (Count ('tags'))'에 태그를 집계하려고하는 경우입니다. –