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



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

我试着用谷歌搜索,但是我找不到。

没有"正确"的方法来做这个(在1.4中,不确定以后的版本)

但是,在代码中禁用它非常简单。

编辑django/contrib/admin/templatetags/admin_list.py中的result_headers函数

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

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

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

当使用django-nonrel时(例如在google app引擎上),排序顺序的每个唯一组合都需要它自己的索引。对于具有5个可排序列的列表,这需要超过每个实体允许的最大索引数(目前是200)

您正在谈论恢复此更改:https://code.djangoproject.com/ticket/11868。我不明白您所说的"我需要很多索引"是什么意思,所以我不明白您为什么要删除这个功能。在Django>1.4中,你仍然"当你点击一列时只按一列排序"——不同的是,如果你点击第二列,当第一列的元素相同时,这将成为第二次排序。

无论如何,如果出于某种原因你想恢复这个功能,你可以尝试添加一个旧版本的django/contrib/admin目录到你的项目文件夹,然后它会使用旧的admin。

将此添加到您的"change_list.html"文件中,在{% block object-tools %}

<script>
$(function(){
    $('a[href^="?o="]').each(function(){this.href=this.href.replace(/..*/,'')});
}
</script>

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

最新更新