Ответ 1
Начиная с версии 2.6, встроенный фильтр сортировки Jinja2 позволяет вам указать атрибут для сортировки по:
{% for movie in movie_list|sort(attribute='rating') %}
Я пытаюсь сделать это:
{% for movie in movie_list | sort(movie.rating) %}
Но это не так... документация туманная... как вы это делаете в Jinja2?
Начиная с версии 2.6, встроенный фильтр сортировки Jinja2 позволяет вам указать атрибут для сортировки по:
{% for movie in movie_list|sort(attribute='rating') %}
Обычно мы сортируем список, прежде чем передавать его Jinja2. Нет способа указать ключ в фильтре Jinja sort
.
Однако вы всегда можете попробовать {% for movie in movie_list|sort %}
. Это синтаксис. Вы не можете предоставить какую-либо ключевую информацию для сортировки.
Вы также можете попробовать создать собственный фильтр. Кажется глупым, когда вы можете сортировать, прежде чем передавать данные Jinja2.
Если movie_list
- это список объектов, вы можете определить различные методы сравнения (__lt__
, __gt__
и т.д.) для класса этих объектов.
Если movie_list
- список кортежей или списков, рейтинг должен быть первым. Или вам придется делать сортировку вне Jinja2.
Если movie_list
- список словарей, вы можете использовать dictsort
, который принимает спецификацию ключа для сортировки. Прочтите это: http://jinja.pocoo.org/2/documentation/templates#dictsort для примера.
Если вы хотите отсортировать в порядке возрастания
{% for movie in movie_list|sort(attribute='rating') %}
Если вы хотите сортировать по убыванию
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}