Django | Diktat in Vorlage sortieren

7

Ich möchte ein nach Schlüssel sortiertes Wörterbuch ausdrucken. Das Sortieren der Schlüssel ist einfach in der Ansicht, indem Sie einfach die Schlüssel in eine Liste setzen und dann die Liste sortieren. Wie kann ich die Schlüssel in der Vorlage durchlaufen und dann den Wert aus dem Wörterbuch holen.

%Vor%

(nur das Beispiel erfunden ...) Der Teil, der nicht funktioniert, ist der Teil "company_dict.company.items". Ich brauche die "Firma", um den Wert der Firma zu sein. Gerade jetzt sucht die Firma Prat nach einem Schlüssel mit dem Namen "Firma" nicht den Wert von "Firma" aus der Schleife oben.

Ich mache ein bisschen Bearbeitung, um das Wörterbuch der Wörterbücher zusammenzusetzen. Das Ändern des Layouts der Daten ist nicht wirklich eine Option. Ich denke, der richtige Ansatz besteht darin, ein Schablonen-Tag zu schreiben, wollte nur wissen, ob es einen integrierten Weg gab, den ich verpasst habe.

    
johannix 08.01.2010, 00:13
quelle

5 Antworten

2

Versuchen Sie Folgendes: Ссылка

ein benutzerdefinierter Vorlagenfilter wird den Trick machen.

%Vor%

mehr zu benutzerdefinierten Vorlagenfiltern: Ссылка

in Ihrem Beispiel würden Sie tun:

%Vor%     
Brandon H 08.01.2010, 00:32
quelle
19

Erstellen Sie einen benutzerdefinierten Filter, der wie folgt aussieht:

%Vor%

Dann in Ihrer Vorlage rufen Sie es mit:

%Vor%

Sie können das sortierte Diktat mit Key abrufen.

    
Turikumwe 08.11.2011 09:31
quelle
1

Diese letzte Lösung war mir auch sehr nützlich. Ich benutze Django 1.6.2, und es scheint, ein dict zu einer Liste mit dem Schlüssel als dem ersten Elemement dieser Liste und dem Inhalt als dem zweiten zu konvertieren. Selbst wenn ich ein Diktat übergebe, wird es als Liste behandelt. Also habe ich das obige optimiert, um so auszusehen, und es funktioniert für mich:

%Vor%     
user3466943 25.09.2014 16:26
quelle
0

für einige Reasone Turikumwe Filter funktionierte nicht für mich (Python3.4, Django 1.7), so schreibe ich es neu zu Tupel-Liste anstelle von SertedDict oder OrderedDict :

%Vor%

Also brauchen wir in der Vorlage nicht .items

%Vor%     
user3479125 11.05.2016 09:29
quelle
0

Turikumwes Antwort kam mir nahe, funktionierte aber nicht für meine Umgebung: python3 und Django 1.10.

Ich habe festgestellt, dass der Filter mit aufgerufen wurde:

%Vor%

führt tatsächlich zu einem ItemsView-Objekt, nicht zu einem Diktat. (Ich vermute, das ist ein Python 2 vs 3 Problem). Angesichts der ItemsView ist die Antwort noch einfacher

%Vor%     
jim anderson 20.11.2016 15:50
quelle

Tags und Links