2016-04-20 6 views
0

Ich frage mich, ob wir ein Wörterbuch von Objekten an eine Vorlage übergeben und es in einer Vorlage loopen können.Ist es möglich, ein Wörterbuch von Objekten aus einer Ansicht an eine Vorlage übergeben

Dies ist meine Struktur:

{ 
    '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]] 
} 

Es ist im Grunde ein Wörterbuch, in dem für jeden Schlüssel, der Wert eine Liste der Liste ist.

Ich würde gerne wissen, ob es eine Möglichkeit, einer Schleife auf diesem innerhalb einer django Vorlage oder, wenn diese Art von Struktur ist zu kompliziert,

+4

Ja kannst du, mit welchem ​​Teil kämpfst du? – Sayse

+0

Hi Sayse, danke für deine Antwort, ich habe verschiedene Strukturen ausprobiert, genau wie die, die Paul empfohlen hat, aber es funktioniert nicht; In Pauls Beispiel sollte der Wert ein EchoCase-Objekt enthalten. – Virtuose

Antwort

0

ich es geschafft, es zu machen arbeitete mit Paul Struktur

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

Danke Paul

+0

Kein Problem, ich habe Ihre Struktur ursprünglich falsch gelesen, aber Sie könnten überlegen, wie Ihr Queryset die Daten als Wörterbuch zusammenfasst, und dann können Sie eine Liste von Wörterbuchwerten mit Unterlisten verwenden. – 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 %} 

Aber es sieht aus wie Echo-Fall und Echo Beschreibung sind ähnliche so möchten Sie vielleicht nur verwandten Bereichen nutzen und tun {{echocase}} {{echocase.description}} oder etwas ähnliches

+0

Hallo Paul, danke für deine Antwort, wenn ich das tue, ich habe nur den ersten Buchstaben des Schlüssels

  • C
      \t \t \t \t \t \t \t
    • o
    • \t \t \t
  • e
      \t \t \t \t \t \t \t
    • s
    • \t \t \t
Virtuose

+0

Whoops, würde ich es eine Liste der Wörterbücher machen. [{ 'Kommunikation': [ [EchoCase: EchoCase Objekt, EchoDescription: EchoDescription Objekt], [EchoCase: EchoCase Objekt, EchoDescription: EchoDescription object] ], 'Eskalationen': [[EchoCase: EchoCase Objekt, EchoBeschreibung: EchoDescription-Objekt], [EchoCase: EchoCase-Objekt, EchoDescription: EchoDescription-Objekt]] }] – Paul

+0

Wenn Sie Ihren Code verwenden: {u'Communication ': [[, ] , [, ]], u'escalations ': []} /usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py: 208: RemovedInDjango110Warnung: Benötigt 2 Werte zum Entpacken in for-Schleife; 1. Dies wird eine Ausnahme in Django 1.10 auslösen. RemovedInDjango110Warning) – Virtuose

Verwandte Themen