Estou tentando fazer isso:
{% for movie in movie_list | sort(movie.rating) %}
Mas isso não está certo ... a documentação é vaga ... como você faz isso no Jinja2?
A partir da versão 2.6, o filtro de classificação integrado do Jinja2 permite que você especifique um atributo para classificar:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.Se você deseja classificar em ordem crescente
{% for movie in movie_list|sort(attribute='rating') %}
Se você deseja classificar em ordem decrescente
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
fonte
Normalmente, classificamos a lista antes de entregá-la ao Jinja2. Não há como especificar uma chave no
sort
filtro de Jinja .No entanto, você sempre pode tentar
{% for movie in movie_list|sort %}
. Essa é a sintaxe. Você não pode fornecer nenhum tipo de informação chave para a classificação.Você também pode tentar escrever um filtro personalizado para isso. Parece bobagem quando você pode classificar antes de fornecer os dados ao Jinja2.
Se
movie_list
é uma lista de objetos, então você pode definir os vários métodos de comparação (__lt__
,__gt__
, etc.) para a classe desses objetos.Se
movie_list
for uma lista de tuplas ou listas, a classificação deve ser a primeira. Ou você terá que fazer a classificação fora de Jinja2.Se
movie_list
for uma lista de dicionários, você pode usar odictsort
, que aceita uma especificação de chave para a classificação. Leia isto: http://jinja.pocoo.org/2/documentation/templates#dictsort para obter um exemplo.fonte
dict.items()
):sort(attribut='1')