如何在Django admin中为外键过滤器排序list_filter标签?

时间:2010-07-15 17:44:17

标签: django django-admin

django admin中外键过滤器的List_filter标签总是按id排序,当列表中有很多过滤器时,这会导致相当混乱。

我一直在寻找简单的解决方案,如何按字母顺序或按日期订购这些标签一段时间。似乎除了使用FilterSpec之外,没有解决方案。

直到我这样做。

我已经更改了filter.html的模板(把它放在模板目录的admin文件夹中)所以它看起来像这样(我想在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>

然后我在for循环上使用'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下拉,因为我有很多标签,但它也可以在标准的'ul'列表中使用。现在我终于按字母顺序排列了所有基于外键的过滤器(即使使用日期也能正常工作)。

如果你需要反向剂量,那就有dictsortreversed模板标签。

希望这有助于某人。

1 个答案:

答案 0 :(得分:0)

错误,问题本身就包含了答案。很抱歉没有更好地构建它。