Как перегруппировать записи блога с несколькими категориями по категориям в шаблоне 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>
Вернуться на верх