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

如何在Django模板中获取外键反向引用,统计每篇博客的评论数量

两种实现方式都可以,具体用法如下:

方案1:直接在模板实现(适合数据量极小的场景)

你已经给Comment的外键字段设置了related_name='comment',直接在模板的对应位置填写{{ b.comment.count }}即可输出当前文章的评论总数。
该方法无需修改后端代码,但存在N+1查询性能问题:如果页面展示100篇博客,会先发起1次全量博客查询,再循环发起100次单篇博客的评论计数查询,总共有101次数据库请求,数据量大时性能损耗非常明显。

方案2:修改views.py提前聚合(推荐,性能更优)

使用Django内置的聚合注解能力,在查询博客列表时就把对应评论数提前计算好,全程仅需1次数据库查询,性能远高于方案1。
首先修正你现有views.py里的笔误:你定义的博客列表变量是all_blogs,但传入context时写了未定义的blog,会直接报错。
修改后的完整views.py代码如下:

# 头部先导入Count聚合工具
from django.db.models import Count

def main_page(request):
    # annotate会给每个Blog对象新增comment_count属性,存储对应评论总数
    all_blogs = Blog.objects.annotate(comment_count=Count('comment'))
    
    context = {
        'blog' : all_blogs,
    }
    
    return render(request, 'main/home.html', context)

之后在模板的对应位置填写{{ b.comment_count }}即可拿到评论数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:45:08