2017-01-04 3 views
1

Ich habe dict:Wie Duplikate in Django Template - Tabelle ausblenden?

my_dict = { 
    '1': [], 
    '2': [], 
    '3': ['some_text'], 
    '4': ['some_text'], 
    '5': ['some_text'], 
    '6': [], 
    '7': ['other_text'], 
    '8': [] 
} 

Und ich möchte dies in Vorlage anzuzeigen:

+--------+------------------------------+ 
| 1 |        | 
+--------+------------------------------+ 
| 2 |        | 
+--------+------------------------------+ 
| 3 | some_text     | 
+--------+        + 
| 4 |        | 
+--------+        + 
| 5 |        | 
+--------+------------------------------+ 
| 6 |        | 
+--------+------------------------------+ 
| 7 | other_text     | 
+--------+------------------------------+ 
| 8 |        | 
+--------+------------------------------+ 

Vorerst habe ich:

{% for skey, svalue in sdict.items %} 
    <tr> 
     <td> 
      {{ skey }} 
     </td> 
     <td> 
      {% for val in svalue %} 
       {{ val }} 
      {% endfor %} 
     </td> 
    </tr> 
{% endfor %} 

und Ausgang:

+--------+------------------------------+ 
| 1 |        | 
+--------+------------------------------+ 
| 2 |        | 
+--------+------------------------------+ 
| 3 | some_text     | 
+--------+------------------------------+ 
| 4 | some_text     | 
+--------+------------------------------+ 
| 5 | some_text     | 
+--------+------------------------------+ 
| 6 |        | 
+--------+------------------------------+ 
| 7 | other_text     | 
+--------+------------------------------+ 
| 8 |        | 
+--------+------------------------------+ 

Wie? TU es?

+0

"['some_text']" Liste wird immer ein einzelner Wert oder es könnte auch mehrere Werte drin sein? –

+0

Single, aber muss in der Liste sein ... aber ich versuche, entfernen Liste – Nips

+0

können Sie weitere Informationen von Django selbst senden? –

Antwort

0

Sie können den Tag {% regroup %} mit einer konvertierten Version Ihres Wörterbuchs in Verbindung mit dem Tag {% ifchanged %} verwenden.

Zuerst müssen Sie Ihren Wörterbuch in der Ansicht, etwas zu konvertieren, die eine Liste von Wörterbuch mit dem {% regroup %}-Tag, zum Beispiel funktioniert:

sdict_converted = [{"column_one": k, "column_two": v} for k, v in sdict.items()] 

Dies kann dann wie so in der Vorlage verwendet werden, :

{% regroup sdict_converted|dictsort:"column_one" by "column_two" as grouped_sdict_converted %} 

{% for group in grouped_sdict_converted %} 
    {% for item in group.list %} 
    <tr> 
     <td> 
     {{ item.column_one }} 
     </td> 
     {% ifchanged item.column_two %} 
     <td rowspan="{{ group.list|length }}"> 
      {% for nested_value in item.column_two %} 
       {{ value }} 
      {% endfor %} 
     </td>      
     {% endifchanged %} 
    </tr> 
    {% endfor %} 
{% endfor %}