Запрос к реляционной базе данных не работает с иерархией . Он всегда возвращает «плоские записи».
Однако вы можете получить записи и затем отрендерить их соответствующим образом, поэтому:
def my_view(reques):
authors = Author.objects.<b>prefetch_related('books_set')</b>
return render(request, 'name-of-template.html', {'authors': authors})
тогда в шаблоне мы можем, например, отрендерить это с помощью :
<!-- name-of-template.html -->
<ul>
{% for author in <b>authors</b> %}
<li>{{ author }}</li>
<ul>
{% for book in <b>author.books_set.all</b> %}
<li>{{ book.name }}</li>
{% endfor %}
{% endfor %}
</ul>
Примечание : обычно модели Django дается единственное имя, поэтому Book
вместо Books
.