在不停机的情况下从 django-models 中删除字段的推荐方法是什么?

问题描述 投票:0回答:1

我和我的团队在一个需要 99.99% 以上正常运行时间的产品上开发共享 django 存储库。

我想从常用模型中删除一些字段。假设我的模型定义如下,我想删除 field2。

class MyModel(models.Model):
    field1 = ...
    field2 = ...

不幸的是,这伴随着迁移,如果执行迁移,将导致部署期间停机,因为旧服务器仍然引用查询中不存在的字段,如下所示。

    new_model = MyModel()
    new_model.save()

    MyModel.objects.all()

如果不创建迁移,我就无法逃脱,因为我在共享存储库上工作,django 将强制下一个开发人员进行新的迁移,以便在我之后对存储库进行更改。

是否有推荐的方法从 django 中的模型中删除字段?

django django-models django-migrations
1个回答
0
投票

在避免停机的同时删除字段的正确方法是: (所有单独的 PR、提交)

  1. 删除该字段的所有用法
  2. 使字段可为空(null=True)并应用迁移
  3. 从模型中删除字段(不应用迁移)
  4. 在步骤 3 中应用迁移以进行字段移除

希望您会发现它很有用

© www.soinside.com 2019 - 2024. All rights reserved.