django-adminplus icon indicating copy to clipboard operation
django-adminplus copied to clipboard

Missing core models from admin after adding adminplus

Open stretch4x4 opened this issue 9 years ago • 4 comments

Hi,

Just spent today integrating adminplus into our Django 1.8.7 site, found an issue where 3 of our admin screens went missing after the upgrade.Turns out they are all core models (Groups, Users and Sites) and these are all added by an autodiscover that django runs before it loads the urls file. See traceback for when the first one is added: traceback Saw this in a previous issue and it has solved the issue for now although I am hoping someone smarter than I can help us solve it better:

import copy
from django.contrib import admin
from django.conf.urls import patterns, include, url

from adminplus.sites import AdminSitePlus

old = admin.site
admin.site = AdminSitePlus()
admin.site._registry = copy.copy(old._registry)

stretch4x4 avatar Jan 29 '16 07:01 stretch4x4

Seems like monkey-patching admin.site isn't enough anymore. In Django 1.7, a decorator for registering models into the admin was introduced, which defaults to registering them into admin.sites.site. The authentication module is using this decorator. admin.site is just a copy generated through __ALL__, from admin.sites.site.

To fix the issue, in your urls.py, do

admin.site = AdminSitePlus()
admin.sites.site = admin.site
admin.autodiscover()

Edit: Thus, #43 is a duplicate of this issue.

athre0z avatar Mar 11 '16 21:03 athre0z

For me, this works properly. Could you add that to the readme/documentation?

AnnaDamm avatar Feb 21 '17 15:02 AnnaDamm

Or patch AdminSitePlus with a site property to point to itself.

oliwarner avatar Aug 25 '18 10:08 oliwarner