Вы неправильно понимаете, что делает параметр related_name=
[Django-doc] . Как сказано в документации:
Имя, используемое для отношения от связанного объекта к этому . (...)
Так что это имя отношения в reverse . Для того, чтобы ваши модели «звучали», вы должны назвать это следующим образом:
class Person(models.Model):
<b>posts</b> = models.ManyToManyField(Post, blank=True, null=True, <b>related_name='authors'</b>)
Здесь также имеет смысл использовать множественное число , поэтому posts
вместо post
.
В этом случае вы можете сделать это с помощью:
{% for post in posts %}
{% for author in post.<b>authors</b>.all %}{{author}}<br/>{% endfor %}
{% endfor %}
Обратите внимание, что если вы хотите отобразить все значения для ManyToManyField
с, лучше использовать .prefetch_related(..)
в наборе запросов для предварительной выборки Person
, иначе шаблон приведет к большому количеству дополнительных запросов.