Проблема с Django admin Регистрация встроенного профиля пользователя admin

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

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

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

спасибо, Трэвис!--6-->

1 ответов


Я предполагаю, что вы либо делаете какой-то сумасшедший импорт модулей... или... у вас есть проблема заказа в вашем 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',
)

таким образом, приложение django регистрирует User модель, а затем вы отменяете регистрацию и повторно регистрируете ее с помощью своего ModelAdmin.