質問

ToDoリストアプリ内のアイテムにタグを付けるために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とhidden_tags setに添付したいです。

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

visible_tags内の各タグに、hidden_tags内の各タグに。私は各セットのすべてのタグを繰り返す必要があるとしますか?

役に立ちましたか?

解決

アノテーション: https://docs.djangoproject.com/en//dev / topics / db /集約/

from django.db.models import Count

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

(少し微調整する必要があるかもしれません。Actionの関連名前を推測)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top