如何显示不止一次使用的标签



相同的标签正在重复并显示在下拉列表中。它在每个帖子中使用的标签上循环,但不检查标签是否重新排列。那么,有什么办法可以避免这种重复吗?我的下拉列表如下:

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

我需要解决这个问题。我想在不同的帖子中使用相同的标签,但我想在下拉列表中只显示一次标签。

您似乎可以diplay所有帖子的所有标签,然后只传递一个所有标签的查询集更有意义,所以:

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=";下拉菜单";aria labeledby=";下拉菜单按钮">{标记%中标记的%}<一个类=";下拉项";href="{%url‘post_tag’tag.slug%}"gt;{{tag.name}}<a>{%endfor%}<div>

最新更新