为了账号安全,请及时绑定邮箱和手机立即绑定

Django - 设置 AUTH_USER_MODEL

Django - 设置 AUTH_USER_MODEL

慕神8447489 2021-09-25 10:03:03
我创建了一个名为 Django 的项目,Backend并在其中创建了一个名为Tool.现在,我已经创建了一个User由模型继承的AbstractUser模型,我创建了2个帐户采用这种模式。class User(AbstractUser):    is_student = models.BooleanField(default=False)    is_mentor  = models.BooleanField(default=False)class Student(models.Model):    user       = models.OneToOneField(User, on_delete=models.CASCADE)    college    = models.CharField(max_length=100)    ...class Mentor(models.Model):    user       = models.OneToOneField(User, on_delete=models.CASCADE)    ...我以这种方式更新了settings.pyinBackend文件夹:AUTH_USER_MODEL = 'Tool.User'在makemigrationsand之后migrate,我收到以下错误:ValueError:无法解析相关模型“Tool.User”
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

我已经清除了所有以前的迁移,删除了数据库并重新创建了它。当我运行makemigrations和 时migrate,它运行良好。

以前的迁移似乎存在一些问题。但是,它显示此错误令人困惑和奇怪。

ValueError:无法解析相关模型“Tool.User”


查看完整回答
反对 回复 2021-09-25
?
DIEA

TA贡献1820条经验 获得超2个赞

你的应用程序名称是什么?字体大小很重要


应用程序“工具”,模型“用户”


设置.py


INSTALLED_APPS = (

    ...

    "Tool",

)

AUTH_USER_MODEL = 'Tool.User'

如果您要将用户导入其他文件,最好这样做


视图.py


from django.contrib.auth import get_user_model

User = get_user_model()

并尝试进行新的迁移。如果您不想添加依赖项。


查看完整回答
反对 回复 2021-09-25
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我认为您在项目中间更改USER 模型时遇到了问题。此更改无法自动完成,需要手动完成。根据这张票,您可以按照以下步骤手动迁移用户模型:

  1. 创建一个与 auth.User 相同的自定义用户模型,将其命名为 User(多对多表保持相同的名称)并设置db_table='auth_user'(因此它使用相同的表)

  2. 扔掉你所有的迁移

  3. 重新创建一组新的迁移

  4. 备份您的数据库

  5. 截断 django_migrations 表

  6. 假应用新的迁移集

  7. 取消设置 db_table,对自定义模型进行其他更改,生成迁移,应用它们

如果您有幸删除数据库,那么您可以按照@SreekarMouli 的回答进行操作。


查看完整回答
反对 回复 2021-09-25
  • 3 回答
  • 0 关注
  • 398 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信