【问题标题】:Disable multiple sort in Django Admin >= 1.4在 Django Admin >= 1.4 中禁用多重排序
【发布时间】:2013-05-04 07:02:43
【问题描述】:

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

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

【问题讨论】:

    标签: django sorting django-admin admin


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      没有“正确”的方法来做到这一点(在 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)

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2017-02-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-04
          • 2011-03-26
          • 2013-10-11
          • 2021-09-10
          • 2016-04-21
          相关资源
          最近更新 更多