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

Django数据迁移报错:已删除Character模型无法查找的问题咨询

Django模型迁移时LookupError的解决方法

问题核心

你遇到的问题是Django迁移执行顺序逻辑冲突:虽然Content的数据迁移依赖了Character的最后一个迁移,但删除Character模型的迁移没有依赖这个数据迁移,导致Django可能优先执行删除操作,等数据迁移运行时,Character模型已经被移除,因此抛出LookupError: App 'characters' doesn't have a 'Character' model。

解决步骤

要确保数据迁移在删除模型的迁移之前执行,只需给删除Character模型的迁移文件添加依赖,强制它等待Content的数据迁移完成后再执行:

  1. 找到characters应用中删除Character模型的迁移文件(比如你最后生成的0010_delete_character.py这类命名的文件)。
  2. 修改该文件的dependencies列表,把Content应用的数据迁移(即你的0002_auto_20230630_1434)添加进去:
# characters/migrations/0010_delete_character.py
from django.db import migrations

class Migration(migrations.Migration):
    dependencies = [
        ("characters", "0009_alter_character_avatar_alter_character_avatar_crop"),
        # 新增这一行,让删除迁移依赖Content的数据迁移
        ("content", "0002_auto_20230630_1434"),
    ]

    operations = [
        migrations.DeleteModel(name="Character"),
    ]

原理说明

Django的迁移系统完全依赖依赖关系链确定执行顺序:

  • 你的Content数据迁移已经依赖了Character的最后一个迁移,确保数据迁移执行时Character模型处于可用状态。
  • 给删除迁移添加对Content数据迁移的依赖后,就强制Django先完成数据迁移,再执行删除模型的操作,从根源上避免了模型找不到的问题。

修改完成后,你可以直接在staging环境执行./manage.py migrate,所有迁移会按正确顺序自动执行,无需分步操作。

内容的提问来源于stack exchange,提问作者Kevin Renskers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:53:08