Django доступ к связанным элементам в шаблоне
Пожалуйста, помогите мне, я застрял в понимании того, как работает Django ORM.
Вот мои очень простые модели:
class Department(models.Model):
title = models.CharField(max_length=50)
class Employee(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
department = models.ForeignKey(Department, on_delete=models.PROTECT)
Мне нужен шаблон, который выглядит следующим образом:
Отдел 1
- Работник 1
- Работник 2
Департамент 2
- Работник 3
- Работник 4
Но я не могу понять, что я должен сделать в моем представлении и (или) шаблоне
Вы должны использовать ListView:
from django.views.generic import ListView
class DepartmentListView(ListView):
model = Department
Создайте шаблон в каталоге приложений.
Внутри шаблона у вас есть доступ к {{ object_list }}, который представляет собой список (QuerySet) объектов вашего департамента.
Таким образом, вы можете использовать:
{% for department in object_list %}
{{ department.title }}
{% for employee in department.employee_set.all %}
{{ employee.first_name }}
{% endfor %}
{% endfor %}
Вам, вероятно, стоит начать с изучения официального учебника по django, в нем вы найдете все, что вам нужно для начала работы.