2010-07-15 4 views
6

Les étiquettes List_filter pour les filtres de clé étrangère dans l'admin django sont toujours classées par id et cela peut causer un désordre quand il y a beaucoup de filtres dans la liste.Comment trier les étiquettes list_filter pour les filtres de clés étrangères dans l'admin Django?

Je cherchais une solution simple, comment commander les étiquettes par ordre alphabétique ou par date depuis un certain temps. Il semble qu'en plus d'utiliser FilterSpec, il n'y a pas de solution pour cela.

Jusqu'à ce que je l'ai fait.

J'ai changé le modèle de filter.html (mettre dans le dossier admin dans votre répertoire templates) il ressemble à ceci (trouvé quelque part sur des extraits de django, je suppose):

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

Et puis je utilisé « dictsort: « name » » étiquette de modèle sur boucle de sorte que le modèle finalement ressemblait à ceci:

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

Je l'ai utilisé déroulante sélectionnez depuis que j'avais beaucoup d'étiquettes, mais il peut être utilisé sur la norme ' ul 'liste aussi. Maintenant, j'ai enfin tous mes filtres à base de clés étrangères classés par ordre alphabétique (et cela fonctionne même si vous utilisez des dates).

Si vous avez besoin renversées Dosting il y a dictsortreversed étiquette de modèle pour cela.

Espérons que cela aide quelqu'un.

+0

Il est encouragé à [répondre à votre question] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/). La prochaine fois ce serait mieux si vous postez votre propre réponse au lieu de donner la réponse dans la question. – FallenAngel

Répondre

0

Errr, la question elle-même contient la réponse. Désolé de ne pas le structurer mieux.

Questions connexes