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

Django开发:如何获取指定专辑的对应评论?

解决Django中获取指定专辑专属评论的问题

你当前的核心问题是albuminfo视图未对评论做精准筛选,ReviewRating.objects.all()会返回所有专辑的评论。以下是两种直接有效的修复方案:

方案1:直接过滤对应专辑的评论

修改albuminfo视图,通过filter方法筛选出当前专辑的评论,同时可以优化异常处理和评论排序:

from django.shortcuts import get_object_or_404

def albuminfo(request, id):
    # 用get_object_or_404替代get,避免专辑不存在时抛出服务器错误
    album = get_object_or_404(albums, id=id)
    # 筛选当前专辑的已启用评论,并按创建时间倒序排列
    reviews = ReviewRating.objects.filter(album=album, status=True).order_by('-created_date')
    return render(request, "home/AlbumInfo.html", {'album' : album, 'reviews' : reviews})

方案2:利用Django反向关联查询

由于ReviewRating通过ForeignKey关联到albums,Django会自动为albums模型生成反向关联管理器reviewrating_set,可以直接通过专辑对象获取其专属评论:

from django.shortcuts import get_object_or_404

def albuminfo(request, id):
    album = get_object_or_404(albums, id=id)
    # 通过反向关联获取当前专辑的已启用评论,同样按时间倒序
    reviews = album.reviewrating_set.filter(status=True).order_by('-created_date')
    return render(request, "home/AlbumInfo.html", {'album' : album, 'reviews' : reviews})

额外优化建议

  • 模型命名规范:Django模型类建议使用单数形式(如Album而非albums),符合PEP8编码规范,提升代码可读性。
  • 评论状态控制:保留status=True的过滤条件,确保只展示审核通过的评论,符合你模型中status字段的设计初衷。
  • 异常处理:get_object_or_404会在专辑不存在时返回404页面,比直接使用objects.get()抛出异常更友好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:44:58