Как перегруппировать записи блога с несколькими категориями по категориям в шаблоне Django
У меня есть блог с постами, которые имеют несколько категорий
class BlogDetailPage(Page):
heading = models.CharField(max_length=150, blank=False, null=False)
categories = ParentalManyToManyField("blog.BlogCategory", blank=False)
...
class BlogCategory(models.Model):
title = models.CharField(max_length=30,unique=True)
slug = AutoSlugField(populate_from='title')
...
Мои посты следующие:
- Пост 1: Категория A
- Пост 2: Категория A, Категория B
- Пост 3: Категория B
Я хочу перегруппировать посты по категориям следующим образом:
Категория A
- Пост 1
- Пост 2
Категория B
- Пост 2
- Пост 3
Мое текущее решение не дает мне правильных результатов.
{% regroup posts by categories.all as posts_by_categories %}
<ul>
{% for category in posts_by_categories %}
<li>{{ category.grouper.0 }} # first category name
<ul>
{% for post in category.list %}
<li>{{ post.id }}, {{post.categories.all}}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
Идеи Эми?
Если вам не нужно использовать 'regroup', как насчет использования 'related_name'?
В python
class BlogDetailPage(Page):
categories = ParentalManyToManyField("blog.BlogCategory", blank=False, related_name="blog_posts")
...
В Django_html
<ul>
{% for category in categories.all %}
<li>{{ category.title }} # first category name
<ul>
{% for post in category.blog_posts.all %}
<li>{{ post.id }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>