猿问

Django 1.5上admin中的自定义用户模型

我myapp.MyUser在Django 1.5应用程序中使用自定义用户模型。我按照文档要求更新了设置AUTH_USER_MODEL = "myapp.MyUser"。当MyUser扩展AbstractUser时,我使用以下代码创建了管理员:


from django.contrib.auth import get_user_model

from django.contrib.auth.admin import UserAdmin


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

除了创建形式外,它都可以正常工作。当我尝试创建新用户时,引发以下异常:


DatabaseError at /admin/core/user/add/

(1146, "Table 'mydatabase.auth_user' doesn't exist")

完整的追溯可以在这里找到。


挖出Django的源代码看起来像UserCreationForm-UserAdmin所使用的-auth.User 直接引用django的内置代码,而不是使用get_user_model。


可能是问题吗?为什么myapp.MyUser除了创建之外,所有内容都引用,包括管理员的auth和更改表单?


繁星点点滴滴
浏览 201回答 2
2回答

慕桂英4014372

如您所说,直接UserCreationForm引用auth.User。关于自定义用户的Django文档和内置的auth表单规定,您必须为任何自定义用户模型重写它。UserCreationForm取决于用户模型。必须为任何自定义用户模型重写。有一个相关的票证票证20086,最初由于无效而关闭,因为用户创建表单正在按文档记录的方式工作。在同一页面上有完整的示例,向您展示了如何重写表单以及如何在admin中注册自定义用户模型。

慕标5832272

如果您不介意将自定义模型存储在一个名为的表中auth_user,则只需在其中设置即可Meta解决auth_user table doesn't exist。所有你需要的是:class MyUser(AbstractUser):    class Meta(AbstractUser.Meta):        swappable = 'AUTH_USER_MODEL'        db_table = 'auth_user'
随时随地看视频慕课网APP

相关分类

Python
我要回答