2010-09-16 2 views
9

В настоящее время я работаю над проектом django. Я пытаюсь добавить модель UserProfile в свою модель пользователя. В моем models.py у меня есть:Проблема с администратором Django, регистрирующим встроенный профиль пользователя admin

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() 

В моем admin.py у меня есть:

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 

class UserAdmin(admin.ModelAdmin): 
    inlines = [UserProfileInline] 


admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 

При запуске сервера разработки (да, я перезапустил) я получаю следующее исключение:

NotRegistered at /admin 
The model User is not registered 

Данное исключение исходит из строки admin.site.unregister(User).

Однако, когда я закомментировать эту строку, я получаю следующее исключение:

AlreadyRegistered at /admin 
The model User is already registered 

Кое-что о моей установке Джанго, кажется, немного биполярным. Я потратил час или около того, исследуя эту проблему, и код, который, как мне кажется, отлично работает для других. Кто-нибудь знает, почему это может произойти?

Спасибо, Travis

ответ

19

я думаю, что вы либо делаете какой-то сумасшедший модуль импортируя ... или ... у вас есть проблемы упорядочения в вашем settings.INSTALLED_APPS списке. Убедитесь, что в вашем списке 'django.contrib.auth' перед вашим приложением, которое заменяет администратора по умолчанию. Список должен выглядеть примерно так:

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', 
) 

приложение Таким образом Джанго регистрирует User модель, а затем отменить и заново зарегистрировать его с вашим собственным ModelAdmin.

+0

Моя проблема заключалась в порядке установленных приложений. (бьет головой) «Ду!» Большое спасибо за вашу помощь Федерико! – TravFisch

+0

Я бы этого не узнал сам. Django не очень полезен в этом случае с «незарегистрированным» исключением! Благодаря! – kissgyorgy

+0

Спасение жизни очень большое спасибо – ritmatter