¿Cómo ordenar una lista en Jinja2?

Estoy tratando de hacer esto:

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

Pero eso no es correcto … la documentación es vaga … ¿cómo haces esto en Jinja2?

A partir de la versión 2.6, el filtro de clasificación incorporado de Jinja2 le permite especificar un atributo para clasificar por:

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

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

Si quieres ordenar en orden ascendente

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

Si desea ordenar en orden descendente

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

Normalmente ordenamos la lista antes de dársela a Jinja2. No hay manera de especificar una clave en el filtro de sort de Jinja.

Sin embargo, siempre puede probar {% for movie in movie_list|sort %} . Esa es la syntax. No puede proporcionar ningún tipo de información clave para la clasificación.

También puedes probar y escribir un filtro personalizado para esto. Parece una tontería cuando puedes ordenar antes de dar los datos a Jinja2.

Si movie_list es una lista de objetos, puede definir los distintos métodos de comparación ( __lt__ , __gt__ , etc.) para la clase de esos objetos.

Si movie_list es una lista de tuplas o listas, la calificación debe ser la primera. O tendrás que hacer la clasificación fuera de Jinja2.

Si movie_list es una lista de diccionarios, puede utilizar dictsort , que acepta una especificación clave para la clasificación. Lea esto: http://jinja.pocoo.org/2/documentation/templates#dictsort para ver un ejemplo.