You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django执行migrate时报错:admin.LogEntry.user引用的自定义User模型未找到,求排查原因

解决Django admin.LogEntry.user 懒引用错误的方案

首先,这个问题的核心几乎肯定是自定义User模型的配置或迁移历史不一致导致的,结合你的描述,我来拆解原因和解决步骤:

最可能的原因:未正确配置AUTH_USER_MODEL

Django的admin.LogEntry模型默认关联系统自带的auth.User,但当你在portfolio应用中定义了自定义User模型后,必须在settings.py中明确告诉Django使用这个新模型——否则系统会一直尝试关联旧模型,最终导致迁移时出现"找不到模型"的错误。

第一步:检查并修复settings.py配置

打开项目的settings.py,确认是否添加了以下配置:

AUTH_USER_MODEL = 'portfolio.User'

⚠️ 注意:这个配置必须精确匹配你的应用名和模型名,应用名要和INSTALLED_APPS里的条目完全一致(比如你INSTALLED_APPS里是'portfolio',就不能写成'Portfolio')。

如果之前没加这个配置,添加后继续下一步;如果已经加了,那问题大概率出在迁移历史上。

迁移历史不一致的修复方案

如果你的项目是中途把User模型移到portfolio应用,或者初始迁移时没正确生成自定义User模型的迁移,就会导致迁移文件中的引用冲突。

步骤1:备份数据(重要!)

在修改迁移之前,务必备份你的数据库和迁移文件,避免数据丢失。

步骤2:清理旧迁移

  1. 删除每个应用下的迁移文件(保留migrations目录和目录下的__init__.py):
    • 删除portfolio/migrations/下除了__init__.py之外的所有文件
    • 删除admin/migrations/、auth/migrations/下的所有迁移文件(如果这些迁移已经执行过,后面会用--fake-initial来标记)
  2. 打开数据库,删除django_migrations表(这个表记录了已执行的迁移历史)。

步骤3:重新生成迁移并执行

  1. 生成初始迁移:
    python manage.py makemigrations
    
    这时候应该会看到portfolio应用生成了包含User模型的迁移文件。
  2. 执行迁移(使用--fake-initial来避免重复创建已存在的表):
    python manage.py migrate --fake-initial
    

额外排查点

如果以上步骤还没解决问题,检查以下内容:

  • 确认portfolio应用已经正确添加到INSTALLED_APPS中:
    INSTALLED_APPS = [
        # ...其他应用
        'portfolio',
    ]
    
  • 检查portfolio/models.py中有没有循环导入的问题,比如是否在其他文件中错误地导入了auth.User而不是portfolio.User
  • 重启你的开发服务器,确保Django加载了最新的配置和模型

内容的提问来源于stack exchange,提问作者Andreas L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 22:52:32