Skip to content

Commit 2e72445

Browse files
committed
newforms-admin: Added autodiscover functionality to django.contrib.admin. This makes the admin aware of per-app admin.py modules and does an import on them when explicitly called. Docs show how this is used. Fixed #6003, #6776, #6776.
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7872 bcc190cf-cafb-0310-a4f2-bffc1f526a37
1 parent 84541cd commit 2e72445

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

django/contrib/admin/__init__.py

+13
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
11
from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL
22
from django.contrib.admin.options import StackedInline, TabularInline
33
from django.contrib.admin.sites import AdminSite, site
4+
5+
def autodiscover():
6+
"""
7+
Auto-discover INSTALLED_APPS admin.py modules and fail silently when
8+
not present. This forces an import on them to register any admin bits they
9+
may want.
10+
"""
11+
from django.conf import settings
12+
for app in settings.INSTALLED_APPS:
13+
try:
14+
__import__("%s.admin" % app)
15+
except ImportError:
16+
pass

docs/admin.txt

+9
Original file line numberDiff line numberDiff line change
@@ -609,11 +609,16 @@ In this example, we register the default ``AdminSite`` instance
609609
# urls.py
610610
from django.conf.urls.defaults import *
611611
from django.contrib import admin
612+
613+
admin.autodiscover()
612614

613615
urlpatterns = patterns('',
614616
('^admin/(.*)', admin.site.root),
615617
)
616618

619+
Above we used ``admin.autodiscover()`` to automatically load the
620+
``INSTALLED_APPS`` admin.py modules.
621+
617622
In this example, we register the ``AdminSite`` instance
618623
``myproject.admin.admin_site`` at the URL ``/myadmin/`` ::
619624

@@ -625,6 +630,10 @@ In this example, we register the ``AdminSite`` instance
625630
('^myadmin/(.*)', admin_site.root),
626631
)
627632

633+
There is really no need to use autodiscover when using your own ``AdminSite``
634+
instance since you will likely be importing all the per-app admin.py modules
635+
in your ``myproject.admin`` module.
636+
628637
Note that the regular expression in the URLpattern *must* group everything in
629638
the URL that comes after the URL root -- hence the ``(.*)`` in these examples.
630639

0 commit comments

Comments
 (0)