Как отобразить теги, использованные более одного раза, только один раз?

В выпадающем списке повторяются и отображаются одни и те же теги. Он перебирает теги, используемые в каждом сообщении, но не проверяет, повторяются ли теги или нет. Есть ли способ избежать этого повторения? Мой выпадающий список выглядит следующим образом:

<div class="dropdown">
    <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                Tags
    </button>
        <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
                {% for post in posts %}
                    {% for tag in post.tags.all %}
                        <a class="dropdown-item" href="{% url 'post_tag' tag.slug %}">
                            {{ tag.name }}
                        </a>
                    {% endfor %}
                {% endfor %}

        </div>
</div>

views.py

def home(request, tag_slug=None):
  posts = Post.objects.all()
  #tag post
  tag = None
   if tag_slug:
     tag = get_object_or_404(Tag, slug=tag_slug)
     posts = posts.filter(tags__in=[tag])
    
return render(request, 'blog/home.html', {'posts':posts})

модели имеет

title = models.CharField(max_length=100)
content = RichTextUploadingField() 
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
image = models.ImageField(default= 'blog_default.jpg', upload_to='blog-pics')
tags = TaggableManager()

Мне нужно решить следующую проблему. Я хочу использовать одни и те же теги в разных постах, но отображать теги только один раз в выпадающем списке

Вы, похоже, хотите отобразить все теги всех постов, тогда логичнее просто передать кверисет всех тегов, так:

def home(request, tag_slug=None):
    posts = Post.objects.all()
    tags = Tag.objects.all()
    if tag_slug:
        tag = get_object_or_404(Tag, slug=tag_slug)
        posts = posts.filter(tags=tag)
    return render(request, 'blog/home.html', {'posts': posts, 'tags': tags})

и работать с:

<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
    {% for tag in tags %}
        <a class="dropdown-item" href="{% url 'post_tag' tag.slug %}">
            {{ tag.name }}
        </a>
    {% endfor %}
</div>
Вернуться на верх