2016-04-20 30 views
0

我在想如果我们可以将对象字典传递给模板并将其循环放入模板中。是否可以将视图中的对象字典传递给模板

这是我的结构:

{ 
    'Communication': [ 
         [EchoCase: EchoCase object, EchoDescription: EchoDescription object], 
         [EchoCase: EchoCase object, EchoDescription: EchoDescription object] 
         ], 
    'escalations': [[EchoCase: EchoCase object, EchoDescription: EchoDescription object], 
        [EchoCase: EchoCase object, EchoDescription: EchoDescription object]] 
} 

它基本上是一本字典,其中每个键的值是列表的列表。

我想知道是否有办法Django模板内,或者这种结构太复杂在这个循环中,

+4

是的,你可以,你挣扎着什么? – Sayse

+0

Hi Sayse,谢谢你的回答,我尝试了不同的结构,就像Paul建议的那样,但它不起作用。在Paul的例子中,值应该包含一个EchoCase对象。 – Virtuose

回答

0

我设法让它的工作用保罗的结构的东西

{% for category, liste in template_dictionnary.items %} 
    <ul> 
     <li> {{ category }} </li> 
     <li> {{ liste}} </li> 
      {% for val in liste %} 
       <li>Val: {{ val.0.comment }}</li> <!-- val.0 is an EchoCase, val.1 is an EchoDescription --> 
       <li>Val: {{ val.1.field }}</li> 
      {% endfor %} 
     </li> 
    </ul> 
{% endfor %} 

谢谢保罗

+0

没问题,我最初误解了你的结构,但是你可能会考虑你的查询集是如何将数据放在一起作为字典的,然后你可以使用带有子列表的字典值列表。 – Paul

0
{% for key, value_list in data %} 
    <ul> 
     <li> {{ key }} 
      <ul> 
      {% for value in value_list %} 
       <li>{{ value }}</li> 
      {% endfor %} 
      </ul> 
     </li> 
    </ul> 
{% endfor %} 

但它看起来像回声案例和回声说明是相关所以你可能只是想使用相关领域,并做{{echocase}} {{echocase.description}}或类似

+0

嗨保罗,谢谢你的回答,当我这样做,我只是有关键

  • Ç
      \t \t \t \t \t \t \t
    • 第一个字母o
    • \t \t \t
  • Ë
      \t \t \t \t \t \t \t
    • 小号
    • \t \t \t
Virtuose

+0

哎呦,我会让它词典列表。 [{ '通信':[ [EchoCase:EchoCase对象,EchoDescription:EchoDescription对象], [EchoCase:EchoCase对象,EchoDescription:EchoDescription对象] ], '上报':[[EchoCase:EchoCase对象, EchoDescription对象], [EchoCase:EchoCase对象,EchoDescription:EchoDescription对象]] – Paul

+0

当使用您的代码时:{u'Communication':[[EchoCase:EchoCase object>,] ,[]],u'escalations':[]} /usr/local/lib/python2。7/dist-packages/django/template/defaulttags.py:208:RemovedInDjango110Warning:需要2个值才能在for循环中解压;得到1.这会在Django 1.10中引发异常。 RemovedInDjango110Warning) – Virtuose

相关问题