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

Django中如何基于表中外键关联的另一表值查询数据并传递给模板

问题原因与修复方案

1. 视图函数错误修复

你之前的filter写法不符合Django ORM的语法规则,filter需要传入字段名=匹配值的键值对参数,直接传入字符串会触发解包错误。
你已经通过pk拿到了对应的GameName对象,直接利用外键的related_name就能快速拿到关联的所有Record记录,正确的视图代码如下:

def game_record(request, pk):
    gamename = get_object_or_404(GameName, pk=pk)
    # 直接通过外键反向关联拿所有对应记录,related_name就是你定义的records
    records = gamename.records.all()
    # 也可以写成 records = Record.objects.filter(game=gamename),效果一致
    content = {'gamename': gamename, 'records': records}
    return render(request, 'speed_run_game_records.html', content)

你之前碰到的报错原因:

  • too many values to unpack:filter方法预期接收键值对参数,你传入了单个字符串,ORM解析参数失败
  • Record not being iterable:错误的查询写法返回了单条Record对象而非可迭代的查询集,或者模板变量引用错误

2. 模板代码错误修复

你模板里有两处逻辑错误:

  • 循环变量是record,你在循环体内误用了复数的records,导致取不到单条记录的属性
  • Record模型没有name字段,玩家名字段是player
    修改后的模板循环部分代码如下:
{% for record in records %}
<tbody>
    <tr class="tBody">
        <td>{{ record.player }}</td>
        <td>{{ record.time }}</td>
        <td>{{ record.platform }}</td>
        <td>{{ record.date }}</td>
    </tr>
</tbody>
{% endfor %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:08