質問
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
の関連名前を推測)
所属していません StackOverflow