【问题标题】:Changing default auth_user table name更改默认 auth_user 表名
【发布时间】:2016-05-22 20:15:05
【问题描述】:

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

所以我四处搜索,显然我们可以按照Rename Django's auth_user table? 的建议使用子类

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

无论如何,我创建了一个名为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 并迁移...它成功完成了

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

【问题讨论】:

  • 作为记录,你应该对这种事情提出一个新问题,cmets只是为了澄清
  • @knbk thanx,就是这样!请将其发布为答案,以便我可以选择它

标签: python django


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    坦率地说,如果您仍然可以这样做,我会启动一个新应用程序。它在docs 中说,最好在开始您的项目之前做出这个决定,因为这很痛苦......很难。

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

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

    所以这是可行的。从一个新项目开始要简单得多

    【讨论】:

      【解决方案3】:

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

      AUTH_USER_MODEL = 'myapp.MyUser'
      

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

      可在Django Project website 上找到符合管理员要求的自定义用户应用的完整示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-17
        • 1970-01-01
        相关资源
        最近更新 更多