Как группировать по категориям в Django

У меня есть список задач проекта, который отображается на сайте Django. Но как в шаблоне я могу заставить его разделить проекты таким образом?

Я хочу иметь заголовки разделов:

**PROJECT 1**
Task 1
Task 2
Task 3

**PROJECT 2**
Task 1
Task 2

Допустим, у вас есть две модели, категория и пост (примерно как проект и задача) :

class Category(models.Model):
    name = ...
    ...

class Post(models.Model):
    title = ...
    category = models.ForeignKey(... related_name = "posts")
    ...

Вы можете передать категории шаблонам следующим образом:

def view(request):
    # get all categories
    cats = Category.objects.all().prefetch_related("posts") 
    # using prefetch related to prevent lazy-loading of queries, 
    # this might give a tiny performance increase reducing amount 
    # of database queries

    # render the template
    render(...., {"category":cats})

В шаблоне вы можете сделать следующее:

{% for category in categories %}
    {{category.name}}
    {% for post in category.posts.all %}
        {{post.title}}
    {% endfor %}
{% endfor %}
Вернуться на верх