首页 > 解决方案 > 将带有对象列表的字典作为 django 中的值呈现

问题描述

我有一本新字典:

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

我无法在模板中渲染来自 TruckDb 的对象

这是我在views.py中尝试的

return render(request, 'classroom/teachers/dispatcher_output.html',{'res':new})

这是我的模板:

{% for k,v in res.items %}

      <h1>v value  is </h1>
      {{ v.Name }}

{% endfor %}

模型.py

class Truckdb(models.Model):

    Name = models.CharField(max_length=30)
    Category = models.CharField(max_length=30)
    Truckid = models.IntegerField(blank=True)
    Length = models.FloatField(blank=True)
    Breadth = models.FloatField(blank=True)
    Height = models.FloatField(blank=True)
    Volume = models.FloatField(blank=True)
    Weight = models.FloatField(blank=True)
    Price = models.FloatField(blank=True)

我无法理解我做错了什么?

编辑

如果在模板中使用它,这是我的输出:

德斯

{% for k,v in res.items %}

        <h1>v value  is </h1>
        {{ v.Name }}

{% endfor %}

我想要的是

我希望能够像使用任何其他模型一样使用对象,并根据模型具有的其他属性获取值。像这样:

{% for k,v in res.items %}

        <h1>v value  is </h1>
        {{ v.Name }}
        {{ v.Category }}
        {{ v.Truckid }}

{% endfor %}

标签: pythondjangodictionarydjango-templates

解决方案


您必须使用两个for loops,因为 dict 中的每个元素都是一个查询集

{% for k,v in res.items %}
    {% for element in v %}
        <h1>v value  is </h1>
        {{ element.Name }}
    {% endfor %}

{% endfor %}

推荐阅读