添加计数值以进行设置

时间:2012-03-09 14:44:07

标签: python django django-taggit

我正在使用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 :(得分:0)

使用注释:https://docs.djangoproject.com/en/dev/topics/db/aggregation/

from django.db.models import Count

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

(你可能需要稍微调整一下。我猜测Action的相关名称)