2010-07-15 5 views
6

Le etichette List_filter per i filtri di chiavi esterne nell'amministratore di django sono sempre ordinate dall'ID e questo può causare un bel casino quando ci sono molti filtri nella lista.Come ordinare le etichette list_filter per i filtri con chiave esterna nell'amministratore di Django?

Sono stato alla ricerca di una soluzione semplice come ordinare quelle etichette in ordine alfabetico o per data per qualche tempo. Sembrava che oltre a usare FilterSpec non ci fosse alcuna soluzione.

Fino a quando non l'ho fatto.

ho cambiato il modello per filter.html (metterlo nella cartella admin nella directory dei modelli) in modo che assomiglia a questo (che si trova da qualche parte sul frammenti di Django immagino):

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

e poi ho usato 'dictsort: 'nome'' tag modello su ciclo for in modo che il modello, infine, si presentava così:

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

ho usato selezionare discesa da quando ho avuto molte etichette, ma può essere usato sullo standard ' anche l'elenco. Ora finalmente ho tutti i miei filtri basati su chiave esterna ordinati alfabeticamente (e funziona anche se si usano le date).

Se è necessario il dosting invertito, esiste un tag modello dictsortverso.

Spero che questo aiuti qualcuno.

+0

Si consiglia di [rispondere alla propria domanda] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/). La prossima volta sarebbe meglio se pubblichi la tua risposta invece di dare la risposta nella domanda. – FallenAngel

risposta

0

Errr, la domanda contiene la risposta. Scusa per non averlo strutturato meglio.

Problemi correlati