与我之前关于扩展 Django 的 AdminSite 的问题相关,我已经成功地将 AdminSite 子类化并且可以完美登录。但是,我的管理站点中没有应用程序模型!admin.autodiscover() 函数不再起作用,而且我对 Python 的熟练程度不足以找出我做错了什么!
长话短说,如果我不能使用 AdminSite.autodiscover(),我如何将我 verious Django 应用程序中的所有模型加载到我的子类 AdminSite 实例中?
与我之前关于扩展 Django 的 AdminSite 的问题相关,我已经成功地将 AdminSite 子类化并且可以完美登录。但是,我的管理站点中没有应用程序模型!admin.autodiscover() 函数不再起作用,而且我对 Python 的熟练程度不足以找出我做错了什么!
长话短说,如果我不能使用 AdminSite.autodiscover(),我如何将我 verious Django 应用程序中的所有模型加载到我的子类 AdminSite 实例中?
没有理由不使用django.contrib.admin.autodiscover
,即使您将AdminSite
. 这是admin
从您注册的所有 Django 应用程序导入模块的实际工具settings.INSTALLED_APPS
,有效地将模型注册到您的管理站点实例。
回顾一下您是否有子类的project.admin.foo_site
实例project.admin.FooAdminSite
:
# project/urls.py
from django.conf.urls import url
from django.contrib import admin
from project.admin import foo_site
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(foo_site.urls)),
)
#project/app/admin.py
from project.admin import foo_site
from project.app.models import Bar
foo_site.register(Bar)
您需要设置一个 admin.py 并注册您的模型。这是 Django 教程中的释义版本:
为此,请在您的应用程序目录中创建一个名为 admin.py 的文件,并将其编辑为如下所示:
from django.contrib import admin
from app.models import Model1, Model2, Model3
admin.site.register(Model1)
admin.site.register(Model2)
admin.site.register(Model3)