I'm currently working on a django project. I'm attempting to add a UserProfile model inline to my User model. In my models.py I have:
class UserProfile(models.Model):
'''
Extension to the User model in django admin.
'''
user = models.ForeignKey(User)
site_role = models.CharField(max_length=128, choices=SITE_ROLE)
signature = models.CharField(max_length=128)
position_title = models.CharField(max_length=128)
on_duty = models.BooleanField(default=False)
on_duty_order = models.IntegerField()
In my admin.py I have:
class UserProfileInline(admin.StackedInline):
model = UserProfile
class UserAdmin(admin.ModelAdmin):
inlines = [UserProfileInline]
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
When I run the development server (yes, I have restarted it) I get the following exception:
NotRegistered at /admin
The model User is not registered
This exception is coming from the admin.site.unregister(User)
line.
However, when I comment out that line, I get the following exception:
AlreadyRegistered at /admin
The model User is already registered
Something about my django setup seems to be a little bi-polar. I've spent an hour or so researching this problem and the code I have seems to work great for others. Does anyone have any insight into why this might be happening?
Thanks, Travis
my guess is that you either are doing some crazy module importing... or... you have an ordering problem in your
settings.INSTALLED_APPS
list. Make sure that'django.contrib.auth'
appears on your list before your app that is replacing the default admin. The list should look something like this:That way django's app registers the
User
model, and then you unregister and re-register it with your ownModelAdmin
.