Проблема с 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
.