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.
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% 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
:
Also brauchen wir in der Vorlage nicht .items
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%