繁体   English   中英

更改默认 auth_user 表名

[英]Changing default auth_user table name

我对内置在 user/auth 中的 django 很满意,我只想向其中添加一些字段并更改表名(主要是最后一个,我可以使用另一个表作为自定义字段)

所以我四处搜索,显然我们可以按照重命名 Django 的 auth_user 表中的建议使用子类

所以我必须启动一个新的应用程序并使用它的模型作为AbstractUser的子类还是有另一种方法? (毕竟我只想使用它的模型而应用程序的其他部分没用)

无论如何,我创建了一个名为customuser的新项目/启动的应用程序,在它的模型中我有这个代码

自定义用户/模型.py

from django.db import models

from django.contrib.auth.models import AbstractUser
class customuser(AbstractUser):

    class Meta:
        swappable = 'AUTH_USER_MODEL'  
        db_table = 'customuser'

我跑了 makemigrations AND migrate ...它成功完成

在此处输入图片说明

但是在数据库中创建了具有默认名称的表,如下所示......我错过了什么吗?

在此处输入图片说明

要使用自定义用户模型,您需要在设置模块中设置AUTH_USER_MODEL设置。

请注意,您不需要设置swappable = 'AUTH_USER_MODEL' 这是一个未记录的私有属性,最好保持原样。

坦率地说,如果你仍然能够做到这一点,我会开始一个新的应用程序。 它在文档中说这个决定最好在开始你的项目之前做出,因为它在......它很难。

如果您打算设置 AUTH_USER_MODEL,您应该在创建任何迁移或第一次运行 manage.py migrate 之前设置它。

否则,解决方案是从数据库dumpdata数据,然后手动调整它,以便将转储文件中对用户类的任何引用替换为新的用户类。 那么您需要创建一些迁移来更改架构。

所以这是可行的。 从一个新项目开始就简单了。

Django 允许您通过为引用自定义模型的AUTH_USER_MODEL设置提供值来覆盖默认用户模型

AUTH_USER_MODEL = 'myapp.MyUser'

这个点对描述了 Django 应用程序的名称(必须在您的INSTALLED_APPS 中),以及您希望用作用户模型的 Django 模型的名称。

可以在Django 项目网站上找到符合管理员标准的自定义用户应用程序的完整示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM