2010-07-15 9 views
6

Las etiquetas de filtro de lista para filtros de clave externa en django admin siempre se ordenan por id y eso puede causar un desorden cuando hay muchos filtros en la lista.¿Cómo ordenar etiquetas list_filter para filtros de clave externa en Django admin?

He estado buscando una solución simple para ordenar esas etiquetas alfabéticamente o por fecha desde hace algún tiempo. Parecía que además de usar FilterSpec no hay solución para eso.

Hasta que lo hice.

me han cambiado la plantilla para filter.html (ponerlo en la carpeta admin en el directorio de plantillas) por lo que se parece a esto (que se encuentra en algún lugar de fragmentos de Django supongo):

{% 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> 

y luego me usado 'dictsort: 'nombre'' etiqueta de plantilla en bucle por lo que la plantilla finalmente se veía así:

{% 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> 

he utilizado de selección desplegable, ya que tenía muchas etiquetas, pero puede ser utilizado en el estándar ' ul 'list también. Ahora finalmente tengo todos mis filtros basados ​​en claves extranjeras ordenados alfabéticamente (y funciona incluso si usa fechas).

Si necesita dosificación inversa hay una etiqueta de plantilla dictsortreversed para eso.

Espero que esto ayude a alguien.

+0

Se anima a [responda su propia pregunta] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/). La próxima vez sería mejor que publique su propia respuesta en lugar de dar la respuesta en la pregunta. – FallenAngel

Respuesta

0

Errr, la pregunta en sí contiene la respuesta. Perdón por no estructurarlo mejor.

Cuestiones relacionadas