我正在创建一个博客,并在帖子和类别之间建立多对多的关系。
class Category(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField()
def __str__(self):
return self.title
class Post(models.Model):
title = models.CharField(max_length=255)
subtitle = models.CharField(max_length=255,null=True,blank=True)
published_date = models.DateTimeField(auto_now_add=True)
draft = models.BooleanField(default=True)
body = RichTextField(config_name='blog')
slug = models.SlugField()
categories = models.ManyToManyField(Category)
featured = models.BooleanField(default=False)
我正在尝试检索与模板中单个帖子相关联的类别列表,以便我可以在帖子的底部显示这些类别标题。
以下是适当显示帖子但不显示类别的模板代码。
{% for post in blog_posts %}
<div class="post">
<div class="date">
{{post.published_date|date:"M"}}
<span class="day">{{post.published_date|date:"d"}}</span>
<span>{{post.published_date|date:"Y"}}</span>
</div>
<div class="entry">
<div class="page-header">
<h2 class="post-title"><a href="{% url blog_post post.id post.slug %}">{{post.title}}</a></h2>
</div>
<blockquote>
<p><strong>{{post.subtitle}}</strong></p>
</blockquote>
<p>{{post.body|safe}}</p>
<div class="well well-small">
<i class="icon-th-list "></i> Categories:LIST CATEGORIES HERE
</div>
</div> <!--entry div-->
</div><!--post div-->
{% endfor %}
有没有人想过如何检索特定帖子的类别?我非常感谢时间和专业知识。
答案 0 :(得分:4)
您可以使用此
访问类别{% for category in post.categories.all %}
{{ category.title }}
{% endfor %}
我还建议在视图中向查询集添加.prefetch_related('categories')
以减少sql查询的数量。