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

Django模板无法渲染字典中Truckdb模型对象字段问题

问题分析与解决办法

我一眼就看出问题所在啦——你的字典new里每个键对应的值都是Truckdb对象的列表,不是单个对象!

先看你的字典结构:

new = {
    'Delhi-Mumbai': [<Truckdb: Truckdb object (6)>],
    'Doon-Gurgaon': [<Truckdb: Truckdb object (8)>, <Truckdb: Truckdb object (6)>]
}

比如'Delhi-Mumbai'对应的值是一个包含1个Truckdb对象的列表,'Doon-Gurgaon'对应的值是包含2个对象的列表。你直接在模板里写{{ v.Name }},相当于给列表对象调用Name属性,这肯定不会有结果(甚至可能抛出属性不存在的错误),因为列表本身没有这个属性。

解决方案:嵌套循环遍历列表中的对象

你需要在模板里再加一层循环,先遍历字典的路线-卡车列表键值对,再遍历每个列表里的Truckdb实例,这样就能正常访问对象的字段了:

修改后的模板代码:

{% for route, truck_list in res.items %}
    <h2>路线:{{ route }}</h2>
    {% for truck in truck_list %}
        <p>卡车名称:{{ truck.Name }}</p>
        <p>类别:{{ truck.Category }}</p>
        <p>卡车ID:{{ truck.Truckid }}</p>
        <p>容积:{{ truck.Volume }}</p>
        <p>价格:{{ truck.Price }}</p>
        <hr>
    {% endfor %}
{% endfor %}

额外小建议

Django社区的模型字段命名规范是小写字母加下划线(比如name、truck_id),虽然你现在用大写开头的字段名也能正常工作,但遵循规范会让代码更易读,也和Django的内置风格保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:22:01