首页 > 解决方案 > 迁移创建新用户时出错 - 模型“auth.User”,已被换出

问题描述

我正在尝试添加我的自定义用户模型,但是,每当我尝试迁移我的更改时,我都会收到错误消息:

account.EmailAddress.user: (fields.E301) Field defines a relation with the model 'auth.User', which has been swapped out.
        HINT: Update the relation to point at 'settings.AUTH_USER_MODEL'.
socialaccount.SocialAccount.user: (fields.E301) Field defines a relation with the model 'auth.User', which has been swapped out.
        HINT: Update the relation to point at 'settings.AUTH_USER_MODEL'.

在我的设置中,我已经添加了:

AUTH_USER_MODEL = 'user.User'

我的自定义用户模型是:

class User(AbstractUser):
    
    def __str__(self):
        return self.username

我该如何解决这个问题?

标签: pythonpython-3.xdjangodjango-models

解决方案


在安装了引用它的包后,您已经修改了 AUTH_USER_MODEL。现在参考是错误的,你必须做一些文档中列出的手动工作:

在创建数据库表之后更改 AUTH_USER_MODEL 要困难得多,因为它会影响例如外键和多对多关系。

此更改无法自动完成,需要手动修复架构,从旧用户表中移动数据,并可能手动重新应用一些迁移。有关步骤的概述,请参阅#25313。

如果你不关心数据,因为项目还没有上线,你可以删除你的数据库,创建一个新的空数据库并迁移。

如果这些选项听起来都不吸引人,请重新评估您是否真的需要自定义用户模型——也许您需要做的就是扩展它


推荐阅读