Как группировать по категориям в 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 %}