【问题标题】:Render a dictionary with object list as values in django将具有对象列表的字典作为 django 中的值呈现
【发布时间】:2019-09-27 07:15:51
【问题描述】:

我有一本新字典:

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 %}

【问题讨论】:

  • 再一次,您的值是列表。您知道如何迭代列表。为什么不能对每个值都这样做?
  • @DanielRoseman 很抱歉,我对 django 很陌生,无法弄清楚
  • @Alasdair 更新了问题
  • 这不是关于 Django 的问题。如果您可以使用 for 循环,那么您已经知道如何回答这个问题了。
  • @AmineMessaoudi 我正在使用另一个使用pyshipping 的自定义代码创建new 变量。向您展示我是如何获得该代码的将是一项漫长的任务,但请放心,它给我的字典是正确的。我可以通过for k, v in res.items(): try: v = get_object_or_404(Truckdb, id=v) new[k] = v except : v = [get_object_or_404(Truckdb, id=v_id) for v_id in v] new[k] = v print(v) 展示我是如何分配对象的

标签: python django dictionary django-templates


【解决方案1】:

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

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

{% endfor %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    相关资源
    最近更新 更多