2016-04-06 29 views
3

私は3つのタグを持っているとしましょう。私はそれにリンクされているオブジェクトの数を表示したい。これと同じように:Django taggit、各タグのカウント数

アップル(3)
オレンジ(0)
バナナ(5)

は、どのように私はそれは、好ましくは、データベースに新しい属性を作成せずに、できるだけ簡単な方法を動作するのですか?

私は、すべてのタグを繰り返し、カウントし、両方を一緒に辞書に入れる必要があると推測しています。例:次に

something = {'apple': X, 'orange': X, etc... 

それはHTMLテンプレートでアクセス可能なように、文脈でそれが利用できるようにしますか?それとも簡単な方法がありますか?ありがとうございました!

+1

使用すると、オブジェクトやタグのコードのためにあなたのモデルを追加する場合は、より良い方法があるかもしれません。あなたがやっていることはそれ以外のところもうまくいきます。 –

答えて

0

通常、これを行う最も簡単な方法は、aggregateを使用してタグ付きモデルにクエリを行い、タグを合計します。

1

使用django-taggit-templatetags2

次に、あなたのtemplateに追加します。

{% load taggit_templatetags2_tags %} 

{% get_taglist as tags for 'yourapp.yourmodel' %} 
    ... 

    <ul> 
    {% for tag in tags %} 
     <li>{{tag}} ({{tag.num_times}})</li> 
    {% endfor %} 
    </ul> 

    ... 
1

私は注釈付きクエリセットでこれをやりました。

queryset = Tag.objects.all() 
queryset2 = queryset.annotate(num_times=Count('taggit_taggeditem_items')) 

あなたがしたい場合は、その後、辞書を作ることができます。

mydict = {} 
for tag in querset2: 
    mydict[tag.name] = tag.num_times 
関連する問題