Django1.5上的admin中的自定义用户模型

2024-04-19 14:47:47 发布

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

我在django1.5应用程序中使用自定义用户模型myapp.MyUser。我按照文档中的说明更新了设置,AUTH_USER_MODEL = "myapp.MyUser"。在MyUser扩展AbstractUser时,我用以下代码创建了admin:

from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin

admin.site.register(get_user_model(), UserAdmin)

除了创造形式外,它的效果很好。尝试创建新用户时,会引发以下异常:

^{pr2}$

完整的回溯可以找到here。在

挖掘出Django的源代码看起来像是UserCreationForm(由UserAdmin使用)引用了Django的内置auth.Userdirectly,而不是使用get_user_model。在

会是问题吗?为什么所有东西都引用myapp.MyUser,包括管理员的身份验证和更改表单,除了创建?在


Tags: django用户fromimportauth应用程序getmodel
2条回答

如果您不介意将您的自定义模型存储在一个名为auth_user的表中,您只需在Meta中设置它,这样就解决了auth_user table doesn't exist。你只需要:

class MyUser(AbstractUser):

    class Meta(AbstractUser.Meta):
        swappable = 'AUTH_USER_MODEL'
        db_table = 'auth_user'

正如您所说,UserCreationForm直接引用auth.Usercustom users and built in auth forms上的Django文档声明必须为任何自定义用户模型重写它。在

UserCreationForm

Depends on the User model. Must be re-written for any custom user model.

有一个相关的票证Ticket 20086,该票证最初被关闭为无效,因为用户创建表单正在按文档所述工作。在

在同一个页面上有一个full example,它向您展示了如何重写表单并在管理中注册自定义用户模型。在

相关问题 更多 >