No estoy seguro de que mi hallazgo, informado aquí, hubiera sido totalmente útil para kender porque, entre otras cosas, no sé si estaba hablando no solo de dos sitios de administración sino también de dos bases de datos, una para cada uno. Esa es mi situación. Obtuve la brillante idea de que quería que una de mis aplicaciones, una nueva aplicación, tuviera su propia base de datos y sus propias páginas de administración.
Pero me encontré con un problema con el enfoque de subclases AdminSite de Bernhard Vallant, aunque parece ser lo ortodoxo y esencialmente correcto de hacer. Resolví el problema.
Aquí está el mod al código de Bernhard Vallant que he encontrado para ser absolutamente necesaria:
from django.contrib.admin.sites import AdminSite
class MyAdminSite(AdminSite):
pass
#or overwrite some methods for different functionality
myadmin = MyAdminSite(name='anything')
Sí, yo realmente no significan name = 'nada' que elija (siempre y cuando no lo es 'admin ').Y he entrado y salido con él y falla siempre sin la asignación de nombre de todo, pero no de administrador.
Los síntomas que adquirí fueron que cuando agregué la segunda base de datos y creé un myadmin para él, registré el modelo con myadmin.register (My_ModelA) y fui a ver las dos páginas de la aplicación de administración, la de mi nueva aplicación que usaba la segunda base de datos y myadmin y el modelo My_ModelA se veía bien, pero mi página de administración anterior mostraba enlaces muertos para sus modelos y cuando hice clic allí en un enlace no muerto para una aplicación (una aplicación antigua que usa el antiguo base de datos) Obtuve un código 404 en el sentido de que la página no existía.
Además, no sé es que importe, pero hice algo diferente de lo que Bernhard Vallant hizo en la URLconf proyecto:
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)),
)
bien "someword" es irrelevante --- allí para apariencias con respecto al usuario final y no el nombre de una aplicación o el proyecto. Pero el administrador asociado es el de mi aplicación anterior y la base de datos anterior. Tenga en cuenta la inclusión de autodiscover(). Hay un lenguaje turbio en los documentos con el que Bernhard Vallant se relacionó con respecto a su uso cuando el proyecto urlconf está configurado como Bernhard Vallant lo tiene con la importación de myadmin pero también con una referencia al administrador predeterminado.
Y para la URLconf para mynewapp tengo:
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"),
)
A pesar de la absoluta necesidad de nombrar a su instancia AdminSite internamente a algo distinto de 'admin', debo añadir que cuando llegó el momento de jazz encima de la El archivo admin.py de mynewapp con alguna subclasificación admin.ModelAdmin, era necesario usar admin.ModelAdmin como clase principal. myadmin es, después de todo, una instancia de una subclase de AdminSite. Como tal, deduzco que está a la par de admin.site, no con admin.
Esto es muy confuso para un NOOB como yo porque el administrador, con la minúscula, parece una instancia, y no estoy familiarizado con las instancias de subclases. Entonces supongo que no es así.
cuando trato de hacer esto, después de iniciar sesión, obtengo el mensaje "No tiene permiso para editar nada". mensaje ... – kender
El usuario que utiliza debe tener los campos is_staff y is_superuser establecidos en verdadero. Luego, después de distinguir entre los diferentes usuarios administradores y lo que tienen acceso para ver http://docs.djangoproject.com/en/1.2/topics/auth/#permissions –
Ok, lo hice funcionar. Pero parece que no puedo tener un conjunto diferente de plantillas para dos sitios de administración: ambos buscan el directorio 'admin /' en las plantillas, incluso uno se crea con el argumento 'backoffice', que debe establecer su nombre en 'backoffice'. '... – kender