Построим запрос шаг за шагом.
Сначала найдите авторов, у которых есть книга в book_list
.
authors = Author.objects.filter(book__in=book_list)
Хитрость заключается в том, чтобы понять, что автор появится один раз для каждой книги в book_list
. Затем мы можем использовать аннотирование для подсчета количества раз, когда автор появляется.
# remember to import Count!
from django.db.models import Count
authors = Author.objects.filter(book__in=book_list
).annotate(num_books=Count('id')
В шаблоне вы можете сделать:
Authors in selected books:
{% for author in authors %}
{{ author.name }}: {{ author.num_books }}<br />
{% endfor %}