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

如何修复Django 2.0.2项目中的迁移执行顺序问题?

解决Django多应用迁移依赖顺序问题

这个问题我在维护多应用Django项目时也踩过坑,核心是app_one的初始迁移没有正确声明对app_two的依赖,导致Django默认的迁移顺序不满足业务需求,进而出现表不存在的错误,连测试命令都跑不起来。下面给你一套亲测有效的解决步骤:

1. 手动修改app_one的初始迁移文件

找到app_one/migrations/目录下的初始迁移文件(一般是0001_initial.py),打开后在Migration类里添加对app_two迁移的依赖:

from django.db import migrations, models

class Migration(migrations.Migration):
    # 新增这一行依赖声明
    dependencies = [
        ('app_two', '0001_initial'),  # 这里填app_two的初始迁移文件名(不带.py后缀)
    ]

    operations = [
        # 这里是原来的迁移操作,不用改动
        migrations.CreateModel(...),
        # ...其他原有代码
    ]

如果app_two已经有多个迁移版本,建议指定最新的那一个迁移文件(比如0002_update_some_model),确保依赖的是最新的表结构。

2. 验证迁移顺序

现在不需要分开执行迁移命令了,直接运行:

python manage.py migrate

Django会自动识别依赖关系,先执行app_two的所有迁移,再执行app_one的迁移,完美解决之前的报错。

3. 测试命令恢复正常

迁移顺序正确后,测试数据库的创建也会按依赖顺序执行,直接运行:

python manage.py test

就不会再出现模型关系不存在的问题了。

额外注意事项

  • 不要随意修改迁移文件里的operations部分,只调整dependencies即可,避免破坏迁移的完整性
  • 后续如果app_two有新的迁移,而app_one的模型依赖了这些新变化,记得同步更新app_one对应迁移文件的依赖
  • INSTALLED_APPS里的app顺序现在不再重要,因为依赖声明会覆盖Django的默认迁移顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:32:39