【问题标题】:Generating a unique list of Django-Taggit Tags in Wagtail;在 Wagtail 中生成唯一的 Django-Taggit 标签列表;
【发布时间】:2016-06-27 19:16:51
【问题描述】:

我正在尝试在 Wagtail 博客索引页面的侧边栏中添加类别标签列表。下面的代码确实有效,但不幸的是它会遍历帖子并将所有标签列为单独的标签,我最终会得到重复的标签。我从 Wagtail 演示中构建了我的博客,因为它不像我习惯的那样使用视图,所以我不确定在哪里添加 .distinct('tags')。

模板

{% for b in blogs %}
  {% for tag in b.tags.all %}
    <li><a href="{% pageurl b.blog_index %}?tag={{ tag }}" class="btn btn-primary btn-xs"> <i class="glyphicon glyphicon-tag"></i> {{ tag }}<span>{{ tag }}</span></a>
       {% if not forloop.last %} {% endif %}
   </li>
 {% endfor %}
{% endfor %}

【问题讨论】:

    标签: django django-templates wagtail


    【解决方案1】:

    通常在视图函数中的任何逻辑,都可以在页面模型的get_context 方法中:

    from django.contrib.contenttypes.models import ContentType
    from taggit.models import Tag
    
    class BlogIndex(Page):
        # ...
        def get_context(self, request):
            context = super(BlogIndex, self).get_context(request)
    
            blog_content_type = ContentType.objects.get_for_model(BlogPage)
            context['tags'] = Tag.objects.filter(
                taggit_taggeditem_items__content_type=blog_content_type
            )
    
            return context
    

    (这里的标签获取代码改编自some internal Wagtail code。)

    【讨论】:

    • 谢谢,我最终得到了tags = Tag.objects.all().distinct('taggit_taggeditem_items__tag')
    猜你喜欢
    • 2016-09-14
    • 2016-07-26
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多