我需要向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'.
答案 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'
对不起,由于语法错误,我使用的是谷歌翻译器。