Frage

Ich versuche das zu tun:

 {% for movie in movie_list | sort(movie.rating) %}

Aber das ist nicht richtig ... die Dokumentation ist vage ... wie machst du das in Jinja2?

War es hilfreich?

Lösung

Ab Version 2.6 können Sie mit dem integrierten Sortierfilter von Jinja2 ein Attribut angeben, das Sie sortieren können:

{% for movie in movie_list|sort(attribute='rating') %}

Sehen http://jinja.pocoo.org/docs/templates/#sort

Andere Tipps

Wenn Sie in aufsteigender Reihenfolge sortieren möchten

{% for movie in movie_list|sort(attribute='rating') %}

Wenn Sie in absteigender Reihenfolge sortieren möchten

{% for movie in movie_list|sort(attribute='rating', reverse = True) %}

Normalerweise sortieren wir die Liste, bevor wir sie Jinja2 geben. Es gibt keine Möglichkeit, einen Schlüssel in Jinja zu spezifizieren sort Filter.

Sie können es jedoch immer versuchen {% for movie in movie_list|sort %}. Das ist die Syntax. Sie können keine wichtigen Informationen für die Sortierung bereitstellen.

Sie können auch versuchen, dafür einen benutzerdefinierten Filter zu schreiben. Scheint albern, wenn Sie sortieren können, bevor Sie die Daten an Jinja2 geben.

Wenn movie_list ist eine Liste von Objekten, dann können Sie die verschiedenen Vergleichsmethoden definieren (__lt__, __gt__, usw.) für die Klasse dieser Objekte.

Wenn movie_list ist eine Liste von Tupeln oder Listen, die Bewertung muss an erster Stelle stehen. Oder Sie müssen die Sortierung außerhalb von Jinja2 machen.

Wenn movie_list ist eine Liste von Wörterbüchern, dann können Sie verwenden dictsort, was eine Schlüsselspezifikation für die Sortierung akzeptiert. Lesen Sie dies: http://jinja.pocoo.org/2/documentation/templates#dictsort zum Beispiel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top