web-dev-qa-db-ja.com

Jinja2でリストを並べ替える方法は?

私はこれをしようとしています:

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

しかし、それは正しくありません...ドキュメントはあいまいです...どのようにJinja2でこれを行いますか?

72
Nick Perkins

バージョン2.6以降、Jinja2の組み込みソートフィルターを使用して、ソートする属性を指定できます。

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

http://jinja.pocoo.org/docs/templates/#sort を参照してください

135
Steve S

昇順で並べ替える場合

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

降順で並べ替える場合

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

通常、Jinja2に渡す前にリストを並べ替えます。 Jinjaのsortフィルターにキーを指定する方法はありません。

ただし、いつでも試すことができます{% for movie in movie_list|sort %}。それが構文です。並べ替えのキー情報を提供することはできません。

また、このためのカスタムフィルターを試すこともできます。 Jinja2にデータを提供する前に並べ替えることができる場合、愚かに思えます。

movie_listはオブジェクトのリストであり、さまざまな比較方法を定義できます(__lt____gt__など)、それらのオブジェクトのクラス。

movie_listはタプルまたはリストのリストです。評価は最初でなければなりません。または、Jinja2の外部で並べ替えを行う必要があります。

movie_listは辞書のリストであり、dictsortを使用できます。これは、ソートのキー指定を受け入れます。これを読んでください: http://jinja.pocoo.org/2/documentation/templates#dictsort 例.

12
S.Lott