Próbuję to zrobić:
{% for movie in movie_list | sort(movie.rating) %}
Ale to nie w porządku ... dokumentacja jest niejasna ... jak to zrobić w Jinja2?
Od wersji 2.6 wbudowany filtr sortowania Jinja2 pozwala określić atrybut do sortowania według:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.Jeśli chcesz posortować w kolejności rosnącej
{% for movie in movie_list|sort(attribute='rating') %}
Jeśli chcesz posortować w porządku malejącym
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
źródło
Zwykle sortujemy listę przed przekazaniem jej Jinja2. Nie ma sposobu, aby określić klucz w
sort
filtrze Jinja .Jednak zawsze możesz spróbować
{% for movie in movie_list|sort %}
. Taka jest składnia. Nie możesz podać żadnych kluczowych informacji do sortowania.Możesz także spróbować napisać niestandardowy filtr. Wydaje się głupie, kiedy można posortować dane przed przekazaniem danych Jinja2.
Jeśli
movie_list
jest to lista obiektów, można określić różne metody porównania (__lt__
,__gt__
etc.) dla klasy tych obiektów.Jeśli
movie_list
jest to lista krotek lub list, ocena musi być pierwsza. Albo będziesz musiał zrobić sortowanie poza Jinja2.Jeśli
movie_list
jest to lista słowników, możesz użyćdictsort
, która akceptuje specyfikację klucza do sortowania. Przeczytaj to: http://jinja.pocoo.org/2/documentation/templates#dictsort jako przykład.źródło
dict.items()
):sort(attribut='1')