You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中获取作者关联的多对多书籍数据?

解决方法

你的问题出在反向关联的属性名称上:你在Book模型的ManyToManyField里设置了related_name='authors',这直接决定了从Author实例反向获取关联Book的属性名是authors,而非你尝试的books。

方案1:不修改模型,直接调整模板代码

把模板里的循环代码改成:

{% for book in author.authors.all %}
    <!-- 在这里渲染书籍信息 -->
{% endfor %}

方案2:修改模型(更推荐,命名更符合语义)

为了让代码可读性更强,建议把Book模型中的related_name改成books:

# books_app/models.py
from django.db import models
from authors_app.models import Author

class Book(models.Model):
    # 其他字段
    authors = models.ManyToManyField(Author, related_name='books')

修改完成后,你最初尝试的{% for book in author.books.all %}就能正常工作了。

另外需要确认你的AuthorBio视图(DetailView)的上下文对象名称确实是author,如果没手动指定context_object_name,也可以用默认的object来访问,比如{% for book in object.books.all %}(对应方案2)或{% for book in object.authors.all %}(对应方案1)。

内容的提问来源于stack exchange,提问作者TiBrains

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:45:44