#27265: Using @admin.register causes failure when AdminModel constructor is
overriden
----------------------------------------------+--------------------
Reporter: Diego Andrés Sanabria Martín | Owner: nobody
Type: Bug | Status: new
Component: contrib.admin | Version: 1.10
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------------------+--------------------
When trying to override the ModelAdmin constructor using the decorator
@admin.register I get an exception.
This is an example for a new project called "what" with an simple app
"why":
Commands to create the files (I used django 1.8.4):
django-admin stratproject what
cd what
python manage.py startapp why
what/settings.py
{{{
...
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'why',
)
...
}}}
why/models.py
{{{
from django.db import models
# Create your models here.
class WhyMe(models.Model):
name = models.CharField(max_length=255)
}}}
why/admin.py
{{{
from django.contrib import admin
from why.models import WhyMe
@admin.register(WhyMe)
class WhyMeAdmin(admin.ModelAdmin):
def __init__(self, *args, **kwargs):
super(WhyMeAdmin, self).__init__(*args, **kwargs)
print("Whaaaaatttt???")
}}}
If I run the command 'runserver' I've got:
{{{
nhandled exception in thread started by <function wrapper at 0x10ae3b758>
Traceback (most recent call last):
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/core/management/commands/runserver.py", line 113, in
inner_run
autoreload.raise_last_exception()
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/utils/autoreload.py", line 249, in raise_last_exception
six.reraise(*_exception)
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/apps/registry.py", line 115, in populate
app_config.ready()
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/contrib/admin/apps.py", line 23, in ready
self.module.autodiscover()
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/contrib/admin/__init__.py", line 26, in autodiscover
autodiscover_modules('admin', register_to=site)
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/utils/module_loading.py", line 50, in autodiscover_modules
import_module('%s.%s' % (app_config.name, module_to_search))
File
"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py",
line 37, in import_module
__import__(name)
File "/Users/diegueus9/.virtualenvs/django1.8/what/why/admin.py", line
6, in <module>
class WhyMeAdmin(admin.ModelAdmin):
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/contrib/admin/decorators.py", line 28, in
_model_admin_wrapper
admin_site.register(models, admin_class=admin_class)
File "/Users/diegueus9/.virtualenvs/django1.8/lib/python2.7/site-
packages/django/contrib/admin/sites.py", line 108, in register
admin_obj = admin_class(model, self)
File "/Users/diegueus9/.virtualenvs/django1.8/what/why/admin.py", line
8, in __init__
super(WhyMeAdmin, self).__init__(*args, **kwargs)
NameError: global name 'WhyMeAdmin' is not defined
}}}
However, if I use the normal registration 'admin.site.register(WhyMe,
WhyMeAdmin)' everything works fine.
This also happens with latest 1.8.x, 1.9.x and 1.10.x
--
Ticket URL: <https://code.djangoproject.com/ticket/27265>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/052.15d2f7da9c4c407905f85df80de087eb%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.