Как отсортировать метки list_filter для фильтров внешних ключей в Django admin? - PullRequest
7 голосов
/ 15 июля 2010

Ярлыки List_filter для фильтров внешнего ключа в django admin всегда упорядочиваются по id, и это может привести к серьезному беспорядку, когда в списке много фильтров.

Я искал простое решение, как упорядочить эти фильтры.метки в алфавитном порядке или по дате в течение некоторого времени.Казалось, что кроме использования FilterSpec для этого нет решения.

Пока я этого не сделал.

Я изменил шаблон для filter.html (поместите его в папку администратора в каталоге шаблонов), чтобы он выглядел так (нашел его где-то в фрагментах django Iугадайте):

{% load i18n %}
<h3>{% blocktrans with title as filter_title %} By {{ filter_title }} {% endblocktrans %}</h3>
<div align="right">
  <select onChange="javascript:window.location = this.options[this.selectedIndex].value;" style="width: 80%">
    {% for choice in choices %}
      <option {% if choice.selected %}selected{% endif %} value="{{ choice.query_string|iriencode }}">
        {{ choice.display }}
      </option>
    {% endfor %}
  </select>
</div>

А потом я использовал шаблонный тег 'dictsort: "name" для цикла, так что шаблон в итоге выглядел так:

{% load i18n %}
<h3>{% blocktrans with title as filter_title %} By {{ filter_title }} {% endblocktrans %}</h3>
<div align="right">
  <select onChange="javascript:window.location = this.options[this.selectedIndex].value;" style="width: 80%">
    {% for choice in choices|dictsort:"display" %}
      <option {% if choice.selected %}selected{% endif %} value="{{ choice.query_string|iriencode }}">
        {{ choice.display }}
      </option>
    {% endfor %}
  </select>
</div>

Я использовал select drop- так как у меня было много ярлыков, но его можно использовать и в стандартном списке 'ul'.Теперь у меня наконец есть все мои фильтры на основе внешнего ключа, упорядоченные в алфавитном порядке (и это работает, даже если используются даты).

Если вам нужно обратное dosting, есть тег шаблона dictsortreversed для этого.помогает кому-то.

1 Ответ

0 голосов
/ 08 июля 2011

Errr, сам вопрос содержит ответ.Извините, что не структурировал это лучше.

...