Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django管理面板中对模型对象重新排序_Python_Django_Django Models_Django Admin - Fatal编程技术网

Python 在django管理面板中对模型对象重新排序

Python 在django管理面板中对模型对象重新排序,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我在django管理面板中有几个配置对象。 它们按以下顺序列出 电子邮件配置 通用配置 网络配置 每个对象都可以单独配置,但所有对象都包含在General config中。所以基本上你需要的是常规配置,所以我想把它移到顶部。 我知道如何在模型本身中对字段进行排序,但如何对模型进行重新排序?我看不到一个明显的解决方案-模型按其_meta.verbose\u name\u复数排序,这发生在AdminSite.index视图中,没有明显的地方可以钩住自定义代码,缺少AdminSite类的子类化和提

我在
django
管理面板中有几个配置对象。 它们按以下顺序列出

  • 电子邮件配置
  • 通用配置
  • 网络配置
每个对象都可以单独配置,但所有对象都包含在
General config
中。所以基本上你需要的是
常规配置
,所以我想把它移到顶部。
我知道如何在模型本身中对字段进行排序,但如何对模型进行重新排序?

我看不到一个明显的解决方案-模型按其_meta.verbose\u name\u复数排序,这发生在AdminSite.index视图中,没有明显的地方可以钩住自定义代码,缺少AdminSite类的子类化和提供您自己的索引方法,这是一个巨大的整体方法,非常不利于继承。

我发现-它对我们很有用(尽管查看代码段下面的注释以获取更新,使其与Django>=1.4一起工作)


从长远来看,是这样的。错误报告在编写此答案时已打开。

因此我刚刚编写了一个django软件包,允许您重新排序django应用程序列表/重命名应用程序标签和型号名称(包括第三方应用程序)-您可以从此处下载:


如果您不介意使用肮脏的伎俩,请在您的模型前面加上一定数量的不可见字符。例如,在“电子邮件配置”前面加上1个零宽度空格,“常规配置”前面加上2个空格,“网络配置”前面加上3个空格。这确实是最简单的方法,我还没有发现任何缺点。

如果你只是想重新排序你的应用程序(使用Django 1.11.10测试)


我看不到一个明显的解决方案-模型是按其
\u meta.verbose\u name\u复数
排序的,这发生在
AdminSite.index
视图中,没有明显的地方可以钩住自定义代码,除了对
AdminSite
类进行子类化并提供您自己的
index
方法之外,这是一个巨大的单一方法,非常不利于继承。好的:(你能不能写一个答案,说明这不是一件合理的事情,这样我就可以结束这个问题了?所以我刚刚写了一个django软件包,允许你重新排序django应用程序列表/重命名应用程序标签和型号名称(包括第三方应用程序)-您可以从此处下载:
class MyAdminSite(AdminSite):
    def index(self, request, extra_context=None):
        if extra_context is None:
            extra_context = {}

        # Move last app to the top of `app_list`.
        app_list = self.get_app_list(request)
        app_list.insert(0, app_list.pop(-1))

        extra_context['app_list'] = app_list
        return super().index(request, extra_context)