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') %}
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.