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

Django如何渲染ForeignKey关联关系?关联评论模板不显示如何解决

问题原因

你定义的related_name='comments'是反向关联的查询集名称,poller.comments对应当前Poller对象绑定的所有评论的集合,属于Django ORM的RelatedManager对象,不是单个评论实例,因此直接读取.comment属性无法拿到值。

解决步骤
  1. 首先修正Comments模型__str__方法的笔误(当前代码调用了不存在的self.body、self.name属性,运行会触发异常):
def __str__(self):
    # 替换为模型实际定义的字段名
    return 'Comment {} by {}'.format(self.comment, self.created_by)
  1. 模板中遍历评论查询集,逐个输出评论内容:
<div id="comments-choice-one-wrapper" class="comments-wrapper">
    {% for comment in poller.comments.all %}
        <div class="comment-item">
            <p>{{ comment.comment }}</p>
            <span>发布者:{{ comment.created_by }} | 发布时间:{{ comment.created_on }}</span>
        </div>
    {% empty %}
        <p>当前暂无评论</p>
    {% endfor %}
</div>

补充说明:必须调用poller.comments.all才会执行ORM查询拿到所有关联的评论对象,遍历后即可正常读取每个评论的字段属性。

可选性能优化

如果Poller关联的评论量较大,可以在视图中提前做预加载,避免模板渲染时触发N+1查询,修改视图中查询Poller的代码即可:

# 查询时预加载关联的所有评论
poller = Pollers.objects.prefetch_related('comments').get(poller_id=poller_id)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:45:03