管理员中其他app标签下的Django模型?

Dav*_*ric 5 python django monkeypatching django-models django-admin

寻找一种方法如何将ModelAdmin实例分配给不同的默认应用程序标签,即使在最新的Django 1.8中也是如此.

Django项目架构:

<root>/appone/models.py    # class ModelOne(django.db.models.Model)
<root>/appone/admin.py     # class ModelOneAdmin(
                           #     django.contrib.admin.ModelAdmin)
                           # admin.site.register(
                           #     ModelOne, ModelOneAdmin)

<root>/apptwo/models.py    # class ModelTwo(django.db.models.Model)
<root>/apptwo/admin.py     # class ModelTwoAdmin(
                           #     django.contrib.admin.ModelAdmin)
                           # admin.site.register(
                           #     ModelTwo, ModelTwoAdmin)
Run Code Online (Sandbox Code Playgroud)

通过上面的示例,每个模型都显示在由应用程序名称标记的单独组中的管理界面中.

  --- appone
        |
        +--- ModelOne

  --- apptwo
        |
        +--- ModelTwo
Run Code Online (Sandbox Code Playgroud)

如何告诉Django ModelTwo下发生的appone标签?(不改变appone应用程序源及其模型!)

  --- appone
        |
        +--- ModelOne
        |
        +--- ModelTwo

  --- apptwo
        <empty>
Run Code Online (Sandbox Code Playgroud)

Dom*_*kuš 6

只需添加app_labelMeta以下类ModelTwo

class ModelTwo():
    class Meta:
        app_label = 'appone'
Run Code Online (Sandbox Code Playgroud)

警告:正如 @guymaro86 所指出的,这将更改表的数据库名称并导致迁移。

  • 这实际上不起作用,因为它有副作用。即它还会更改表的数据库名称并导致迁移。 (6认同)

mis*_*bah 3

你有没有考虑过django-modeladmin-reorder

Github: https: //github.com/mishbahr/django-modeladmin-reorder PyPi: https: //pypi.python.org/pypi/django-modeladmin-reorder/

免责声明:去年我遇到了非常类似的问题,我想将最常用的应用程序放在管理索引的顶部。找不到任何适合我的场景,所以我写了自己的:-)