gpt4 book ai didi

Django 南循环依赖

转载 作者:行者123 更新时间:2023-12-04 06:39:58 24 4
gpt4 key购买 nike

我在 Django 1.5 项目中有一个应用程序(我们称之为 MyApp)。 MyApp 定义了自定义用户模型 (MyUser)。该项目使用另一个引用 MyUser 的应用程序 (AnotherApp)。 MyApp 引用 AnotherApp 中的字段。

在我的开发笔记本电脑上一切正常。我正在尝试在服务器上部署我的项目,当我进入迁移步骤时,MyApp 由于对 AnotherApp 的依赖而失败,而 AnotherApp 由于对 MyApp 的依赖而失败(我曾尝试独立迁移应用程序)。两者都在各自的第一次迁移中失败 (0001)

Running migrations for myapp:
- Migrating forwards to 0017_auto__blah_blah.
> myapp:0001_initial
FATAL ERROR - The following SQL query failed: ALTER TABLE "myapp_mymodel_othermodel" ADD CONSTRAINT "othermodel_id_refs_id_ae052c6d" FOREIGN KEY ("othermodel_id") REFERENCES "anotherapp_othermodel" ("id") DEFERRABLE INITIALLY DEFERRED;
The error was: relation "anotherapp_othermodel" does not exist

Error in migration: myapp:0001_initial
DatabaseError: relation "anotherapp_othermodel" does not exist


Running migrations for anotherapp:
- Migrating forwards to 0008_blah_blah.
> anotherapp:0001_initial
FATAL ERROR - The following SQL query failed: ALTER TABLE "anotherapp_othermodel" ADD CONSTRAINT "creator_id_refs_id_cff6fecf" FOREIGN KEY ("creator_id") REFERENCES "myuser" ("id") DEFERRABLE INITIALLY DEFERRED;
The error was: relation "myuser" does not exist

Error in migration: anotherapp:0001_initial
DatabaseError: relation "myuser" does not exist

有任何想法吗?

最佳答案

这里似乎有一个真正的循环依赖。不过,您可以很容易地破坏它:将 MyApp 中 m2m 表的创建移动到单独的迁移。最简单的方法可能是将 0001_initial.py 复制到一个新名称,然后删除原始中 m2m 表的块(向前和向后!),并删除副本中的所有其他内容。

副本应该命名为在 0001_initial 和 0002_whatever 之间排序——比如 0001_initial2.py;它应该依赖于 ("AnotherApp", "0001_initial") -- 而后者又应该依赖于 ("MyApp", "0001_initial")。

关于Django 南循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com