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

时间:2016-10-24 15:35:32

标签: django django-models django-migrations django-users

我需要向Django的用户模型添加更多字段,因此我在名为帐户的应用中创建了一个自定义模型类(名为帐户)扩展了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'.

6 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

即可

答案 3 :(得分:1)

当我更改一个应用程序的名称时,我也遇到了类似的问题,我必须在两个位置删除迁移文件,所有迁移都针对特定应用程序迁移文件夹,然后在“ Your-project-env / lib”进行迁移/python3.5/site-packages/django/contrib/admin/migrations”。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我有同样的问题。 在models.py中的类下面查看,将app_label更改为您的应用程序的名称,然后输入类的名称,然后出现错误。我认为这样做可以解决错误。

class Meta:
        app_label = 'put_app_name'

对不起,由于语法错误,我使用的是谷歌翻译器。