Hi all,

I'm making some extensions to the Django AdminSite for dashboard I'm
working on, and I have a couple of questions. My urls.py looks
something like this:

    from django.utils.importlog import import_module
    from django.contrib import admin

    my_admin = import_module('my.admin')
    # monkeypatch admin.site so that autodiscover and subsequent
imports reference my site instance
    admin.site = my_admin.site
    admin.autodiscover()

In each application's admin.py that uses the custom extensions, I
import the admin object directly from my.admin, so that imports wont
break in isolation.

This is only working because I do the import using import_module. If I
do it the normal way, my site object is initialized twice; the module
is re-imported at some point during autodiscover and the subsequent
imports point to the wrong instance.

Questions:

1: Is there a better way to extend the admin site that I'm missing? If
not:
2: Shouldn't this work without hacking the import in urls.py? It took
me a while to track this down, and it feels a bit wrong to me for the
following reasons:
  * It was surprising to see my site with 2 different object ids being
generated for one __init__.py.
  * Python supports module level mutable state, Django should respect
that for 3rd party applications, as well as it's own.

I'm also not aware of the precise reason that this is not working (why
is the import done twice?).

Thanks,

Scott

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to