Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Django models Django管理自动注册器--自动模型注册_Django Models_Django Admin - Fatal编程技术网

Django models Django管理自动注册器--自动模型注册

Django models Django管理自动注册器--自动模型注册,django-models,django-admin,Django Models,Django Admin,我想注册到管理员所有的应用程序模型,是否有任何方法可以自动创建。 我有这么多应用程序,我需要自动注册。据我所知,没有简单/直接的方法可以做到这一点,但是你可以编写一个简短的snipplet来实现这一点。这是我用来处理这件事的狙击手。但是,您必须对管理文件进行一些修改 somefile.py from django.contrib import admin def admin_register(namespace): for name, model_admin in namespace

我想注册到管理员所有的应用程序模型,是否有任何方法可以自动创建。
我有这么多应用程序,我需要自动注册。据我所知,没有简单/直接的方法可以做到这一点,但是你可以编写一个简短的snipplet来实现这一点。这是我用来处理这件事的狙击手。但是,您必须对管理文件进行一些修改

somefile.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
from somefile import admin_register

class SomeModelAdmin(admin.ModelAdmin):
    pass
然后,您必须编辑admin.py文件,并将
admin
postfix添加到所有管理类中,如:

admin.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
from somefile import admin_register

class SomeModelAdmin(admin.ModelAdmin):
    pass
在每个admin.py文件的末尾,添加以下内容

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

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