Проблема с администратором Django при регистрации встроенного администратора профиля пользователя - PullRequest
9 голосов
/ 16 сентября 2010

Я сейчас работаю над проектом django.Я пытаюсь добавить встроенную модель UserProfile в свою модель User.В моем 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 выглядит немного биполярным.Я потратил около часа на изучение этой проблемы, и код, который у меня есть, отлично работает для других.Кто-нибудь знает, почему это может происходить?

Спасибо, Трэвис

1 Ответ

20 голосов
/ 16 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...