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

Django执行makemigrations时报KeyError: 'content_type'问题咨询

错误含义解析

你遇到的KeyError: 'content_type'错误核心原因是迁移链不同步:Django执行迁移时需要按照迁移文件的顺序逐步修改项目状态,当前有一个迁移操作要删除content_type字段,但Django在当前维护的模型状态中找不到这个字段的记录,通常是本地和生产的迁移文件不一致、或者你之前删除过部分迁移文件导致链条断裂。

可以删除旧迁移文件重建流程吗?

可以,这是解决迁移链断裂的常用方案,但必须严格按步骤操作,操作前必须先完整备份生产数据库,避免数据丢失。

具体操作步骤(保留现有生产数据)

  • 第一步:完整备份生产环境的所有数据库数据,确认备份可用后再执行后续操作
  • 第二步:删除所有App下的历史迁移文件,保留各迁移目录下的__init__.py文件,可执行以下命令快速清理:
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
  • 第三步:基于当前最新的数据模型生成新的初始迁移文件:
    python manage.py makemigrations
  • 第四步:执行伪迁移,让Django标记新生成的初始迁移已经全部执行,避免重复修改现有表结构:
    python manage.py migrate --fake
  • 第五步:验证迁移状态,执行python manage.py showmigrations确认所有迁移都已标记为已应用,后续修改模型即可正常执行makemigrations和migrate流程。

其他可选排查方案(无需全量重置迁移)

如果不想清空所有迁移记录,可以尝试以下操作定位问题:

  • 对比本地和生产环境的所有迁移文件,确认是否有遗漏上传的涉及content_type字段增删的迁移文件
  • 查看生产库的django_migrations表,找到最近一次执行成功的迁移记录,删除该记录之后所有未执行的迁移文件,同时删除django_migrations表中对应的未执行记录,之后重新生成迁移即可。

内容的提问来源于stack exchange,提问作者josh schmidt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 10:39:02