更改默认的auth_user表名称

时间:2016-05-22 20:15:06

标签: python django

我对内置于user / auth的django感到满意,我只想添加一些字段并更改表名(主要是最后一个,我可以使用另一个表来自定义字段)

所以我四处搜索,显然我们可以按照Rename Django's auth_user table?

的建议使用子类

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

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

customuser / models.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并迁移......它已成功完成

enter image description here

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

enter image description here

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

  

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

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

所以它是可行的。从新项目开始,它只是很多更简单。

答案 2 :(得分:0)

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

AUTH_USER_MODEL = 'myapp.MyUser'

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

可以在Django Project website上找到与管理员兼容的自定义用户应用的完整示例。