我不确定我的发现,据报道,这对kender完全有帮助,因为除了别的以外,我不知道他是不是在谈论两个管理站点,而是两个数据库,每个数据库一个。那是我的情况。我明白了,我想让我的一个应用程序(一款新应用程序)拥有自己的数据库和自己的管理页面。
但是我遇到了Bernhard Vallant的AdminSite子类化方法的一个问题,尽管它似乎是正统的,基本上是正确的。我解决了这个问题。
这里的MOD到伯恩哈德Vallant的代码,我认为是完全必要的:
from django.contrib.admin.sites import AdminSite
class MyAdminSite(AdminSite):
pass
#or overwrite some methods for different functionality
myadmin = MyAdminSite(name='anything')
是的,我真的是名=“什么”,你选择(只要它不是“管理“)。而且我用它切换进出,每次都没有任何管理员名称分配失败。
我得到的症状是,当我添加第二个数据库并为其创建了一个myadmin,然后使用myadmin.register(My_ModelA)注册模型,然后查看两个管理应用程序页面时,我使用第二个数据库和myadmin以及模型My_ModelA的新应用程序看起来不错,但我的旧管理页面显示了它的模型的死链接,当我点击一个应用程序的非死链接时(旧应用程序使用旧数据库)我得到了一个404代码,表明该页面不存在。
另外,我不知道它的问题,但我做了一些不同的东西从什么 伯恩哈德Vallant项目的URLconf做:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include('mynewapp.urls')),
url(r'^someword/admin/', include(admin.site.urls)),
)
OK,“someword”无关---那里关于最终用户的外观,而不是应用程序或项目的名称。但关联的管理员是我的旧应用程序和旧数据库的管理员。注意autodiscover()包含。 Bernhard Vallant在项目urlconf配置为Bernhard Vallant时使用的文档中存在一些模糊的语言,它将其与myadmin导入结合使用,并且还提供了对默认管理员的引用。
而对于URL配置为mynewapp我:
from django.conf.urls import patterns, url, include
from myproject.admin import myadmin
urlpatterns = patterns('',
url(r'/', include(myadmin.urls))
)
urlpatterns += patterns('mynewapp.views',"... url() stuff for mynewapp's views"),
)
尽管内部命名您AdminSite实例不是“管理”其他东西的绝对必要性,我必须补充一点,当是时候爵士乐的mynewapp的admin.py文件与一些admin.ModelAdmin子类,有必要确实使用admin.ModelAdmin作为父类。 myadmin毕竟是AdminSite子类的一个实例。正因为如此,我认为它与admin.site相同,而不是admin。
这对于像我这样的NOOB来说非常混乱,因为管理员用小写字母看起来像一个实例,而我不熟悉子类实例。所以我认为它不是。
当我尝试执行此操作时,在登录后,我收到“您无权编辑任何内容”。消息... – kender 2010-07-08 20:31:52
您使用的用户应该将is_staff和is_superuser字段设置为true。然后区分不同的管理员用户和他们有权访问http://docs.djangoproject.com/en/1.2/topics/auth/#permissions – 2010-07-09 08:42:55
好吧,我得到了这个工作。但我似乎无法为两个管理员站点设置不同的模板集合 - 他们都在模板中查找'admin /'目录,即使其中一个是使用'backoffice'参数创建的,该参数应该将其名称设置为'backoffice '... – kender 2010-07-09 20:34:19