1

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

我尝试了谷歌搜索和一切,但我找不到如何。

4

3 回答 3

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(例如在 google app 引擎上)时,排序顺序的每个唯一组合都需要自己的索引。对于具有 5 个可排序列的列表,这需要超过每个实体允许的最大索引数(当前为 200)

于 2014-01-14T15:49:52.920 回答
0

将此添加到 {% block object-tools %} 内的“change_list.html”文件中

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

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

于 2014-09-07T18:46:18.560 回答
0

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

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

于 2013-06-11T20:02:21.447 回答