I'm experiencing this error in Django 1.2 admin.
Scenario:
I have two applications, say app1
and app2
inside my project.
In both of these apps, I defined their respective admin.py
files to hook each apps respective models to django's admin site.
Inside app1
admin.py, I defined three ModelAdmin classes corresponding to three models class in app1 and registered two of them to the admin site.
class App11stModelAdmin (admin.ModelAdmin):
#class definitions here
#This class is an abstract class
#class Meta:
# abstract = True
class App12ndModelAdmin (admin.ModelAdmin):
#class definitions here
class App13rdModelAdmin (admin.ModelAdmin):
#class definitions here
#register to admin site two of them
admin.site.register(App12ndModel, App12ndModelAdmin)
admin.site.register(App13rdModel, App13rdModelAdmin)
Inside app2
, I imported app1.App11stModelAdmin
to define the admin model of an app2
model.
inside admin.py of app2
:
from app1.admin import App11stModelAdmin
class App21stModelAdmin(App11stModelAdmin):
#define some things here
#register App21stModelAdmin to admin site
admin.site.register(App21stModel, App21stModelAdmin)
With this code, I am getting this error message:
AlreadyRegistered at /admin/
The model App12ndModel is already registered
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/
Django Version: 1.2
Exception Type: AlreadyRegistered
Exception Value:
The model App12ndModel is already registered
This strange because I'm sure I'm only registering that model's admin once. When I commented out the register statement for that model, I got the same error, but now for App13rdModel
model.
In the meantime, to fix this issue, I removed the registration statements and instead put them inside a 'static' function inside app1
admin.py.
like: inside app1 admin.py
def register():
admin.site.register(App12ndModel, App12ndModelAdmin)
admin.site.register(App13rdModel, App13rdModelAdmin)
and then in app2 admin.py
I included the register function in the import:
from app1.model import App11stModelAdmin, register
......
......
#register the two admin model in app1 inside app2 admin.py by calling the register function
register()
And this works. I am not getting the Already Registered error anymore.
Question:
What did I do which resulted to that error? I am new to Django and Python.
Thank you very much!
ModelAdmin
doesn't haveMeta
property, you can delete it. It belongs toModel
class. Also - is there any reason, why you haveApp11stModelAdmin
defined in app1, when you use it only in app2? – yedpodtrzitko