3

我正在创建一个博客,并且帖子和类别之间存在多对多关系。

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

有人对我如何检索特定帖子的类别有想法吗?我非常感谢时间和专业知识。

4

1 回答 1

4

您可以使用此访问类别

{% for category in post.categories.all %}
    {{ category.title }}
{% endfor %}

我还建议.prefetch_related('categories')在您的视图中添加到查询集以减少 sql 查询的数量。

于 2013-07-17T21:01:29.180 回答