2012-03-09 5 views
0

私はdjango-taggitを使ってToDoリストアプリの項目にタグをつけています。設定するカウント値を追加する

私はそれを読むことができるように、各タグに関連するアクションの数とともに、各タグの一覧を表示しようとしている:Aが1つの項目、タグBはなど、3を持ってい

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

タグ

django-taggitに論理フィールドを追加しました。だから今私はこのようなタグのリストを取得しています:

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

私はこのような項目(アクション)の数を取得することができます:今、私はvisible_tagsにこれらのカウントを添付したい

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

を私はこのようなテンプレートでそれらを反復することができるようにと設定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/ja/latest/api.html#aggregation – JamesO

+0

可能性があります。文書化された問題は、反対の関係、すなわち、OPが「Action」:「Action.objects.annotate(Count( 'tags'))」でタグを数えたい場合に発生します。 –

関連する問題