Django管理员注册内联用户配置文件管理员时出现问题

2024-06-26 05:09:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在做一个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设置似乎有点双极性。我花了一个小时左右的时间研究这个问题,我编写的代码似乎对其他人很有用。有人知道为什么会这样吗?

谢谢, 特拉维斯


Tags: djangopy模型modeladminonmodelssite
1条回答
网友
1楼 · 发布于 2024-06-26 05:09:57

我猜你是在做一些疯狂的模块导入。。。或者。。。您的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重新注册。

相关问题 更多 >