为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星点点滴滴 2021-03-17 10:09:55
我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中注册自定义用户模型。


查看完整回答
反对 回复 2021-03-30
?
慕标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'


查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信