Pergunta

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?

Foi útil?

Solução

A partir da versão 2.6, o filtro de classificação interno do Jinja2 permite especificar um atributo para classificar por:

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

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

Outras dicas

Se você quiser classificar em ordem crescente

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

Se você quiser classificar em ordem decrescente

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

Normalmente, classificamos a lista antes de dar a Jinja2. Não há como especificar uma chave no Jinja's sort filtro.

No entanto, você sempre pode tentar {% for movie in movie_list|sort %}. Essa é a sintaxe. Você não fornece nenhum tipo de informação -chave para a classificação.

Você também pode tentar escrever um filtro personalizado para isso. Parece bobo quando você pode classificar antes de fornecer os dados para 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 é uma lista de tuplas ou listas, a classificação deve ser a primeira. Ou você terá que fazer a classificação fora do Jinja2.

Se movie_list é uma lista de dicionários, então você pode usar dictsort, que aceita uma especificação chave para a classificação. Leia isso: http://jinja.pocoo.org/2/documentation/templates#dictsort Por exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top