2010-07-15 72 views
6

Django admin中的外鍵過濾器的List_filter標籤總是按id排序,並且當列表中有很多過濾器時會導致相當混亂。如何在Django admin中對外鍵過濾器的list_filter標籤進行排序?

我一直在尋找簡單的解決方案,如何按字母順序或按日期排序這些標籤一段時間。似乎除了使用FilterSpec之外,沒有解決方案。

直到我做到了。

我已經改變了filter.html(把它放在你的模板目錄管理文件夾)的模板,以便它看起來像這樣(發現它Django的片段我猜某處):

{% 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:‘名稱’」關於循環,使模板終於盼來這樣的模板標籤:

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

,因爲我有很多唱片公司我都用過選擇下拉,但它可以在標準的「使用ul'列表。現在我終於擁有了所有基於外鍵的過濾器按字母順序排列(即使使用日期,它也能正常工作)。

如果您需要反轉劑量,那麼會出現dictsortreversed模板標籤。

希望這可以幫助某人。

+0

鼓勵[回答你自己的問題](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/)。下次如果你發佈自己的答案,而不是在問題中給出答案,會更好。 – FallenAngel 2012-09-08 13:39:40

回答

0

錯誤,問題本身包含答案。對不起,沒有更好地構建它。

相關問題