Django 框架多对多字段。如何在我的索引列表页面中获取特定值

Django Framework ManyToManyField. How can i get a specific value in my index list page

我的 Django Framework 有问题,一个博客 post 可能有多个标签,我怎样才能在我的索引页面中获取 post 列表的标签值?我只能在 post 详细信息页面中获得一个 post 的标签。

from django.db import models


# Create your models here.
class Tag(models.Model):
    tag_name = models.CharField(max_length=64)

def __unicode__(self):
    return self.tag_name


class Article(models.Model):
    title = models.CharField(max_length=100)
    category = models.CharField(max_length=50)
    tag = models.ManyToManyField(Tag, blank=True)
    publish_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    content = models.TextField()

    def __unicode__(self):
        return self.title

views.py:

def home(request):
posts = Article.objects.all().order_by('-publish_time')
paginator = Paginator(posts, 4)
page = request.GET.get('page')
try:
    post_list = paginator.page(page)
except PageNotAnInteger:
    post_list = paginator.page(1)
except EmptyPage:
    post_list = paginator.paginator(paginator.num_pages)
return render(request, 'home.html', {'post_list': post_list})

试试这个

tag_list = Tag.objects.filter(article__in=post_list)

tag_list是所有标签,post_list中的帖子都有。

tag_list = Tag.objects.filter(article__in=posts)

tag_list是所有标签,posts中的帖子都有。

在模板中您可以获取所有文章的标签:

{% for post in post_list %}
    {% for tag in post.tag.all %}
        Use your tags here
    {% endif %}
{% endif %}