2010-09-09 9 views
5

Tengo un problema con AdminSite personalizado: mis aplicaciones no son visibles en el índice de administración y no se puede acceder a ellas si escribo la URL adecuada para ver sus modelos. Mi problema es muy similar a esto: http://groups.google.com/group/django-users/browse_thread/thread/881feb7eef80853a, pero es un tipo de problema inverso: los modelos incluidos son visibles, pero los personalizados no.Mis aplicaciones no están visibles cuando utilizo AdminSite personalizado

Mi proyecto llamado magia y tiene aplicación. llamado nullt

mágica/admin.py:

from django.contrib.admin.sites import AdminSite 
from django.contrib.auth.models import User, Group 
from django.contrib.auth.admin import UserAdmin, GroupAdmin 

class MagicAdmin(AdminSite): 
    pass 

admin_site = MagicAdmin() 

admin_site.register(Group, GroupAdmin) 
admin_site.register(User, UserAdmin) 

mágica/nullt/admin.py

from magic.admin import admin_site 
... 
admin_site.register(Host, HostAdmin) 
admin_site.register(Client, ClientAdmin) 
... 

mágica/urls.py

from django.conf.urls.defaults import * #@UnusedWildImport 
from magic.admin import admin_site 

urlpatterns = patterns('', 
    (r'^admin/', include(admin_site.urls)), 
) 

P. S. Estoy usando Django 1.2.2 instalado con easy_install y Python 2.6.5 desde Ubuntu 10.04 x86_64

Respuesta

2

Por defecto, las dos líneas siguientes se comentan en urls.py de un nuevo proyecto:

from django.contrib import admin 
admin.autodiscover() 

De django/contrib/admin/__init__.py :

def autodiscover(): 
    """ 
    Auto-discover INSTALLED_APPS admin.py modules and fail silently when 
    not present. This forces an import on them to register any admin bits they 
    may want. 
    """ 

Esta llamada puede ser necesaria, incluso si tiene un administrador personalizado.

+0

Leí en la documentación de Django 1.2 ((http://docs.djangoproject.com/en/1.2/ref/contrib/admin/) que realmente no hay necesidad de usar el autodescubrimiento cuando se usa su propia instancia de AdminSite ya que probablemente importará todos los módulos admin.py por aplicación en su módulo myproject.admin. Pero en realidad el autodiscover() hizo el truco y veo mis modelos personalizados en mi administrador personalizado :) Gracias. –

Cuestiones relacionadas