如何解决除非单独运行,否则Django数据迁移将失败
我已经碰到过几次,不知道为什么会发生。当我通过plot.legend.click_policy = 'hide'
一起运行迁移时,最后一次迁移(数据迁移)失败。解决方案是在其他迁移完成后自行运行数据迁移。如何自动运行它们而不会出现错误?
我进行了一系列迁移:
- fulfillment / 0001.py
- order / 0041.py(相关性:实现/0001.py)
- order / 0042.py
- order / 0043.py
我遵循了这个RealPython article to move a model to a new app,它工作得很好,并在#1到#3的迁移中涉及。迁移#3还添加了一个./manage.py migrate
字段。迁移#4是一种数据迁移,仅从现有GenericForeignKey
字段中填充GenericForeignKey
字段。
ForeignKey
同时运行序列会出现错误:
伪造。DoesNotExist:ContentType匹配查询不存在。
如果我运行到#3的迁移,则单独运行#4一切正常。如何让它们按顺序运行而没有错误?
解决方法
有两件事可能会解决该问题,首先请查看run_before
https://docs.djangoproject.com/en/3.1/howto/writing-migrations/#controlling-the-order-of-migrations
如果将其添加到订单1中,并确保它在订单4之前运行,则应该可以解决问题。
您可以做的另一件事是将数据迁移移至履行#2,这样您就可以确定所有订单都已经完成,而履行#1也已经完成。
,不是通过ContentType
来获取.get()
,而是必须通过apps
参数来检索模型,然后使用get_for_model()
。
def copy_to_generic_fk(apps,schema_editor):
ContentType = apps.get_model('contenttypes','ContentType')
PickupPoint = apps.get_model('fulfillment','pickuppoint')
pickup_point_type = ContentType.objects.get_for_model(PickupPoint)
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。