Вопрос

Я использую Django-Taggit в элементы теги в приложении списка Todo.

Я пытаюсь перечислить каждый из тегов вместе с количеством действий, связанных с каждым тегом, чтобы он мог прочитать:

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? Я предполагаю, что я должен повторять все теги в каждом наборе?

Это было полезно?

Решение

Используйте аннотации: https://docs.djangoProject.com/ru/Дева / Темы / БД / Агрегация /

from django.db.models import Count

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top