在Django Admin> = 1.4中禁用多重排序

时间:2013-05-09 17:49:52

标签: django sorting django-admin admin

我在App Engine上使用Django Non Rel,这是Django Admin中多列排序的一个问题,因为我需要很多索引。 我想在Django 1.3中重新创建行为,当您单击它时,您只能按列进行排序。

我尝试使用谷歌搜索和一切,但我找不到。

3 个答案:

答案 0 :(得分:1)

没有“正确”的方法(在1.4中,不确定以后的版本)

然而,事实证明在代码中禁用非常简单。

修改result_headers

中的django/contrib/admin/templatetags/admin_list.py功能

在第149行,插入以下行(就在yield语句之前):

o_list_primary = [make_qs_param(new_order_type, i)]
o_list_toggle = [make_qs_param(new_order_type, i)]

为什么要禁用多重排序功能?

当使用django-nonrel时(例如在谷歌应用引擎上),每个独特的排序顺序组合都需要自己的索引。对于包含5个可排序列的列表,这需要的数量超过每个实体允许的最大索引数(当前为200)

答案 1 :(得分:0)

您正在谈论恢复此更改:https://code.djangoproject.com/ticket/11868。我不明白你的意思是“我需要很多索引”,所以我不明白你为什么要删除这个功能。在Django> 1.4中,您仍然“在单击时仅按一列排序” - 不同之处在于您是否单击第二列,这将成为第一列元素相同时的二级排序。

无论如何,如果由于某种原因你想恢复这个功能,你可以尝试将old version django / contrib / admin目录添加到你的项目文件夹中,然后它将使用旧的管理员。

答案 2 :(得分:0)

将其添加到{%block object-tools%}

内的“change_list.html”文件中
<script>
$(function(){
    $('a[href^="?o="]').each(function(){this.href=this.href.replace(/\..*/,'')});
}
</script>

如果你没有加载jQuery,你需要包含它。我建议包含在“base_site.html”