Django - 设置 AUTH_USER_MODEL

我创建了一个名为 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”


慕神8447489
浏览 409回答 3
3回答

青春有我

我已经清除了所有以前的迁移,删除了数据库并重新创建了它。当我运行makemigrations和 时migrate,它运行良好。以前的迁移似乎存在一些问题。但是,它显示此错误令人困惑和奇怪。ValueError:无法解析相关模型“Tool.User”

DIEA

你的应用程序名称是什么?字体大小很重要应用程序“工具”,模型“用户”设置.pyINSTALLED_APPS = (    ...    "Tool",)AUTH_USER_MODEL = 'Tool.User'如果您要将用户导入其他文件,最好这样做视图.pyfrom django.contrib.auth import get_user_modelUser = get_user_model()并尝试进行新的迁移。如果您不想添加依赖项。

慕的地8271018

我认为您在项目中间更改USER 模型时遇到了问题。此更改无法自动完成,需要手动完成。根据这张票,您可以按照以下步骤手动迁移用户模型:创建一个与 auth.User 相同的自定义用户模型,将其命名为 User(多对多表保持相同的名称)并设置db_table='auth_user'(因此它使用相同的表)扔掉你所有的迁移重新创建一组新的迁移备份您的数据库截断 django_migrations 表假应用新的迁移集取消设置 db_table,对自定义模型进行其他更改,生成迁移,应用它们如果您有幸删除数据库,那么您可以按照@SreekarMouli 的回答进行操作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python