Как удалить дубликаты тегов?

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

<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})

Я спрашивал здесь и спрашиваю снова . Мне нужна ваша помощь.

попробуйте это

models.py

from django.db import models

class Post(models.Model):
    tags = models.ManyToManyField(
        'post.Tag',
        related_name='posts',
    )
    ...


class Tag(models.Model):
    ...

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])
    # Note that filtered posts are used
    tags = Tag.objects.filter(posts__in=posts).distinct()
    return render(request, 'blog/home.html', {'posts':posts, 'tags': tags})

home.html

<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>
Вернуться на верх