I have a weird problem that’s already resolved, but I’d like to understand what’s going on. The app I’m working on is open source so you can take a look at everything.
I wanted to customize the default admin site, and so added a new AdminConfig/AdminSite to the app (not project), which didn’t work out of the box - docs said to add these onto the project level, and now it works. Except that I wanted to define the custom admin site in the app to not “pollute” the small project package.
- If I define the custom AdminSite on the project level and register it as the default site in
myproject.apps.AdminConfig everything works well.
- If I do it on the app level and register
myapp.admin.site.AdminSite, the site works… except that all admin registrations from
myapp have no effect.
What’s going on in the latter case? Is the registration order wrong (custom admin config is the first entry in
I think you’d be better off showing both of those use cases as PRs. There are a number of things that could matter, so being as precise as possible is important. And if you can share the code along with a description of what it results in (error, something not showing), we’ll be able to help more.
With the current
main branch (relevant changes in commit 0339557), I have a custom AdminSite class in the
coriolis project package, and it works fine - Events is there and all is good:
If I move the custom AdminSite class to the
events app and set
default_site in AdminConfig to that moved class (on the
django-admin-site-in-app branch - b82e6f4), Events are gone from that list above. There are no warnings, error messages or crashes, everything works correctly other than that the admin site no longer sees Events. Adding some prints on the module level shows the custom admin site package being imported.
The solution is to just keep it in the project package, but I’d like to understand why this happens.
I suspect if you rename that
events.admin package to something everything would be fine. The reason is that the dot path of
events.admin could be either the directory
admin or the file
My bet is that this line Coriolis/__init__.py at b82e6f49d9cba41ba55c800a472e73a71fc09a02 · DragoonAethis/Coriolis · GitHub is causing your pain. Your models file is likely importing something that is conflicting. If you haven’t heard it already, don’t import a wildcard. It leads to difficult to debug situations like this.