gpt4 book ai didi

python - 带有夹具预加载的 Django South Schema 迁移

转载 作者:行者123 更新时间:2023-12-05 07:58:52 24 4
gpt4 key购买 nike

所以问题是我现在有一个运行良好的 Django 项目。

我需要进行两个架构更改,A 和 B。

出于某种原因,我需要在应用迁移 A 之后将一些固定装置加载到数据库,然后再应用迁移 B。

当然,我可以手动完成。喜欢:

./manage.py migrate my_app 0001
./manage.py loaddata my_fixture.json
./manage.py migrate my_app 0002

而且效果很好。

但是,在生产环境中,我想使用脚本自动部署我的项目。我不想在其中添加太多手动步骤。

我理想的解决方案是我可以在我的架构更改后自动填充我的夹具(可能使用一些特殊的选项参数)。

有人知道怎么做吗?

PS:我可能没有提供足够的信息来说明我的问题。因此,如果您认为问题本身太模糊,请留下评论,让我看看我能做些什么来让它更清楚。

更新:我已将 Serafeim 标记为正确答案。 Robert Jørgensgaard Engdahl 指出了一个很好的观点,可以在下面的帖子中详细解释 django loading data from fixture after backward migration / loaddata is using model schema not database schema

但是,我们遇到的问题并不完全相同。我的模式 A 是创建一个新表,并且在可预见的将来不会更改它。迁移 B 是向另一个表添加一个新列,该列指向 A 创建的表。这就是为什么我需要在新表中预填充一些数据(出于其他一些复杂的原因,我不想解释这个太多了)。我已经测试了 Serafeim 的解决方案,它有效。

但是,如果有人遇到类似情况,请在采用之前先查看 Robert Jørgensgaard Engdahl 分享的帖子,了解此解决方案的缺点。再次感谢两位回答者!

最佳答案

您应该使用南向数据迁移:

http://south.readthedocs.org/en/latest/tutorial/part3.html#data-migrations .

South 已经有一个在 http://south.readthedocs.org/en/latest/fixtures.html 中加载您的数据的方法。 .

创建迁移 0001 后,创建一个空迁移,用于加载数据:

./manage.py datamigration appname load_myfixture

然后,在 0002_load_myfixture.py 迁移模块中修改 forwards 迁移,如下所示:

def forwards(self, orm):    from django.core.management import call_command    call_command("loaddata", "my_fixture.json")

您不需要实现向后迁移。

关于python - 带有夹具预加载的 Django South Schema 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23373395/

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