我myapp.MyUser在Django 1.5应用程序中使用自定义用户模型。我按照文档要求更新了设置AUTH_USER_MODEL = "myapp.MyUser"。当MyUser扩展AbstractUser时,我使用以下代码创建了管理员:from django.contrib.auth import get_user_modelfrom django.contrib.auth.admin import UserAdminadmin.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和更改表单?
2 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
如您所说,直接UserCreationForm
引用auth.User
。关于自定义用户的Django文档和内置的auth表单规定,您必须为任何自定义用户模型重写它。
UserCreationForm
取决于用户模型。必须为任何自定义用户模型重写。
有一个相关的票证票证20086,最初由于无效而关闭,因为用户创建表单正在按文档记录的方式工作。
在同一页面上有完整的示例,向您展示了如何重写表单以及如何在admin中注册自定义用户模型。
慕标5832272
TA贡献1966条经验 获得超4个赞
如果您不介意将自定义模型存储在一个名为的表中auth_user,则只需在其中设置即可Meta解决auth_user table doesn't exist。所有你需要的是:
class MyUser(AbstractUser):
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
db_table = 'auth_user'
添加回答
举报
0/150
提交
取消