[英]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.