运行“python manage.py migrate”命令时Django中的ValueError

问题描述 投票:8回答:6

我需要为Django的User模型添加更多字段,因此我创建了一个自定义模型类(在名为accounts的应用程序中名为Accounts),它扩展了Django的AbstractUser类。

之后,我更新了我的settings.py文件,定义了AUTH_USER_MODEL属性:

AUTH_USER_MODEL = 'accounts.Accounts'

然后,我使用python manage.py makemigrations命令为自定义模型创建了一个迁移文件。

之后,我运行了python manage.py migrate命令,我收到此错误消息:

ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'accounts.accounts', but app 'accounts' isn't installed.

错误的原因是什么?我该如何解决?

更新:现在,如果我运行python manage.py makemigrations命令,我收到此错误消息:

ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'accounts.accounts', but app 'accounts' doesn't provide model 'accounts'.
django django-models django-migrations django-users
6个回答
10
投票

您只需删除迁移文件夹中的先前0001_initial.py,然后尝试执行makemigration并再次迁移


2
投票

这只是因为你已经有了一个默认用户模型的实例。启动一个新项目并再次迁移模型,它应该可以工作。


1
投票

您没有将accounts添加到您的INSTALLED_APPS中。从评论中,我可以在您的应用列表中看到accounts.apps.AccountsConfig。而不是它,只需将accounts添加到您的INSTALLED_APPS


1
投票

当我更改其中一个应用程序的名称时,我也遇到了类似的问题,我不得不删除两个位置的迁移文件,特定应用程序迁移文件夹的所有迁移,然后是“Your-project-env / lib / python3”的迁移。 5 /站点包/ Django的/的contrib /管理/迁移”。


0
投票

我有类似的问题。管理员应用程序具有缓存和迁移历史记录。我通过删除YouProject \ lib \ site-packages \ django \ contrib \ admin \ migrations中的所有缓存和迁移历史记录(pycache文件,0001.intial等,仅保留init.py)来解决此问题


0
投票

我也有同样的问题。看看你在models.py的课下,将app_label更改为你的应用程序的名称,我把类的名称,然后错误来了。这样做我认为它修复了错误。

class Meta:
        app_label = 'put_app_name'

很抱歉有一些语法错误,我正在使用谷歌翻译。

© www.soinside.com 2019 - 2024. All rights reserved.