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, в нем вы найдете все, что вам нужно для начала работы.

Вернуться на верх