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

Django模型迁移至新应用后多对多关联表未重命名指向不存在表问题

错误原因

你仅在迁移操作中处理了Students、Teachers两个独立模型的表重命名逻辑,没有覆盖二者隐式生成的多对多关联表。你提到的Django提交修复的是显式指定through中间表的多对多字段迁移场景,没有声明中间表的隐式多对多关联表不会被自动重命名,需要手动补充操作。

修复方案

  • 如果你还未执行迁移上线,可以直接修改oldapp的迁移文件,在原有两个模型重命名操作后新增SQL操作,手动重命名关联表:
operations = [
    # 原有Students、Teachers模型的SeparateDatabaseAndState操作
    ...
    migrations.RunSQL(
        sql="ALTER TABLE oldapp_students_teachers RENAME TO newapp_students_teachers;",
        reverse_sql="ALTER TABLE newapp_students_teachers RENAME TO oldapp_students_teachers;"
    ),
]
  • 如果你已经执行过迁移,可以新建空迁移文件,把上述SQL操作加入后执行即可解决表不存在的报错。
  • 如果你不想手动写SQL,也可以将该多对多字段改为显式声明through中间表,将中间表也作为独立模型按原有逻辑迁移,不需要额外处理SQL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:45:03