views:

130

answers:

1

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

+1  A: 

Hi 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:

INSTALLED_APPS = (
    # django apps first
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',

    # your stuff from here on
    'yourproject.userstuff',
)

That way django's app registers the User model, and then you unregister and re-register it with your own ModelAdmin.

Federico Cáceres
My problem was the order of installed Apps. (smacks forhead) "Duh!!!" Thank you very much for your help Federico!
Travis Fischer