0

我想将所有应用程序模型注册到管理员中,有什么方法可以自动创建。我有这么多应用程序,我需要自动注册

4

1 回答 1

-1

据我所知,没有简短/直接的方法可以做到这一点,但是您可以编写一个简短的片段来实现这一点。这是我用来处理这个问题的snipplet。但是,您必须对管理文件进行一些修改。

一些文件.py

from django.contrib import admin


def admin_register(namespace):
    for name, model_admin in namespace.copy().iteritems():
        if name.endswith("Admin"):
            model = namespace[name[:-5]]
            try:admin.site.register(model, model_admin)
            except:raise

然后您必须编辑您的admin.py文件,并将Admin后缀添加到您的所有管理员类中,例如:

管理员.py

from somefile import admin_register

class SomeModelAdmin(admin.ModelAdmin):
    pass

并在每个admin.py文件的末尾添加以下内容

admin_register(namespace=globals())

这将获取全局命名空间中所有已定义的类、函数和变量,并选择以 . 结尾的类、函数和变量Admin。您需要在每个管理文件的末尾包含此行。

对于 Admin Class 定义,如果您不想为 Admin 类指定任何属性,只需编写pass. 只需为您希望在管理面板中看到的人添加管理类。

于 2013-07-29T10:53:00.827 回答