Добавить значение счетчика, чтобы установить - PullRequest
0 голосов
/ 09 марта 2012

Я использую 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, чтобы я мог их перебирать в шаблоне следующим образом:

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

Как я могу прикрепить значение .count к каждому тегу в visible_tags и в hidden_tags? Я предполагаю, что мне нужно перебрать все теги в каждом наборе?

1 Ответ

0 голосов
/ 09 марта 2012

Используйте аннотации: https://docs.djangoproject.com/en/dev/topics/db/aggregation/

from django.db.models import Count

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

(Возможно, вам придется немного подправить. Я думаю, для связанного названия для Action)

...