2010-09-09 3 views
5

J'ai un problème avec AdminSite personnalisé: mes applications ne sont pas visibles dans l'index administrateur et ne sont pas accessibles si je saisis l'URL appropriée pour afficher leurs modèles. Mon problème est très similaire à ceci: http://groups.google.com/group/django-users/browse_thread/thread/881feb7eef80853a mais ce genre de problème est inverse - les modèles empaquetés sont visibles, mais mon habitude ne sont pas.Mes applications ne sont pas visibles lors de l'utilisation d'AdminSite personnalisé

Mon projet nommé magie et avoir une application. nommé nullt

magie/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) 

magie/nullt/admin.py

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

magie/urls.py

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

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

post-scriptum J'utilise Django 1.2.2 installé avec easy_install et Python 2.6.5 de Ubuntu 10.04 x86_64

Répondre

2

Par défaut, les deux lignes suivantes sont commentées dans le urls.py d'un nouveau projet:

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. 
    """ 

Cet appel peut être nécessaire, même si vous avez un administrateur personnalisé.

+0

J'ai lu dans la documentation de Django 1.2 (http://docs.djangoproject.com/fr/1.2/ref/contrib/admin/) qu'il n'est vraiment pas nécessaire d'utiliser autodiscover lorsque vous utilisez votre propre instance AdminSite puisque vous sera probablement importer tous les modules admin.py par-app dans votre module myproject.admin. Mais en fait le autodiscover() a fait l'affaire et je vois mes modèles personnalisés dans mon admin personnalisée :) Merci. –