我在django
管理面板中有几个配置对象。
它们按以下顺序列出
每个对象都可以单独配置,但所有对象都包含在General config
中。所以基本上你需要大多数General config
,所以我想将它移到顶部。
我知道如何在模型中订购字段,但如何重新排序模型?
答案 0 :(得分:10)
所以我刚刚写了一个django软件包,允许你重新订购django app list / rename app label和model name(包括第三方应用程序) - 你可以从这里下载:
答案 1 :(得分:4)
我没有看到明显的解决方案 - 模型按其_meta.verbose_name_plural排序,这发生在AdminSite.index视图中,没有明显的地方可以挂钩自定义代码,缺少继承AdminSite类和提供你自己的索引方法,这是一个巨大的单片方法,非常遗传 - 不友好。
答案 2 :(得分:2)
如果您不介意使用肮脏的技巧,请在模型的verbose_name_plural
前加上一定数量的隐形zero-width spaces。例如。前缀为“电子邮件配置”,1个零宽度空间,“常规配置”,2个,“网络配置”,3个。这是最简单的方法,我还没有找到任何缺点。
答案 3 :(得分:1)
我发现this snippet for reordering models in the django admin panel - 它适用于我们(虽然请查看更新片段下方的评论,以使其与Django一起使用> = 1.4)
从长远来看,有django bug report about the ordering of models within apps。在撰写此答案时,错误报告已打开。
答案 4 :(得分:0)
如果您只想重新排序应用(使用Django 1.11.10
进行测试)。
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)