【问题标题】:Django taggit, listing count for each tagDjango taggit,每个标签的列表计数
【发布时间】:2016-07-26 09:43:27
【问题描述】:

假设我有三个标签。我想显示有多少对象链接到它。像这样:

苹果 (3)
橙色 (0)
香蕉 (5)

如何以最简单的方式使其工作,最好不要在数据库中创建新属性?

我猜我需要遍历所有标签,计算它们,然后将它们放在字典中,对吧?例如:

something = {'apple': X, 'orange': X, etc...

然后让它在上下文中可用,以便它可以在 HTML 模板中访问?或者有没有更简单的方法?谢谢!

【问题讨论】:

  • 如果您为对象和标签代码添加模型,那么可能有更好的方法。除此之外,你正在做的也很好。

标签: django django-templates django-views


【解决方案1】:

我用一个带注释的查询集来做到这一点。

queryset = Tag.objects.all()
queryset2 = queryset.annotate(num_times=Count('taggit_taggeditem_items'))

如果你愿意,你可以制作一本字典:

mydict = {}
for tag in querset2:
    mydict[tag.name] = tag.num_times

【讨论】:

    【解决方案2】:

    使用django-taggit-templatetags2

    然后添加你的template:

    {% load taggit_templatetags2_tags %}
    
    {% get_taglist as tags for 'yourapp.yourmodel' %}
      ...
    
      <ul>
        {% for tag in tags %}
          <li>{{tag}} ({{tag.num_times}})</li>
        {% endfor %}
      </ul>
    
      ...
    

    【讨论】:

      【解决方案3】:

      通常,最简单的方法是使用aggregate 查询标记模型,总结标签。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-14
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多