是否有可能在南方维护全球(跨所有应用程序)迁移历史记录?

时间:2012-08-24 14:39:09

标签: python django django-south

我遇到了与What migration order does South follow across different apps?类似的问题,其中来自不同应用程序(例如app_a和app_b)的迁移必须交错以便工作,但是South首先从app_a运行所有迁移,然后全部迁移默认情况下,从app_b迁移。

我知道有一种方法manually specify dependencies to make it work,但这似乎是不必要的,因为迁移的全局顺序可以由南方记录,因此它可以根据它们在过去实际交错的方式进行交错。

那么,是否有一种很好的方法让South记住您的全局迁移历史记录并自动设置依赖项?

1 个答案:

答案 0 :(得分:2)

我认为不需要:记录运行迁移的顺序会引入比所需更多的依赖性(因为大多数应用程序迁移可以 - 而且应该 - 独立于其他应用程序运行)。您只需要自己指定依赖项,因为您知道哪些依赖项需要先于其他依赖项。

此外,迁移的运行顺序并不真正“存在”:只有多个数据库(本地,开发,生产)和一组应用程序,每个都有一些迁移。这些迁移只需要运行,您将需要尽可能少的依赖项。指定所有迁移需要运行的特定顺序是一个不必要的限制。

如果其他开发者决定以不同的顺序迁移应用,那么这应该是可能的。唯一的限制应该是您使用depends_on指定的硬依赖项。

现在可能需要更多的手工劳动,但如果您的应用程序没有太多交织在一起,那么应用程序之间不应该有太多的依赖关系。如果你这样做,你可能需要考虑合并这些应用程序,因为它们比你想象的更相关吗?