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
相关产品推荐
相关产品推荐

