我在生产应用程序上使用了一个 django 模型,我需要在网站零停机的情况下更改字段的名称和数据类型。这就是我的计划:
1) 在数据库中创建新字段来替换原始字段
2) 每次加载Model实例时,将原始字段的数据转换并存储到新字段中,然后保存对象(仅当新字段为空时才保存对象)
3) 随着时间的推移,一旦每个对象都有一个非空白的新字段,原始字段就可以被删除
第二步我还可以附加什么方法?
最佳答案
您是否必须首先更改业务逻辑(也许还有模板)才能适应新的字段名称?
除非在代码中的数十个位置将内容分配给相关字段,否则您可以(在数据库中创建字段后)
1) 调整代码以识别旧字段(读取)和新字段(名称)(写入)。
2)通过锁定/.update()调用等将数据库中的数据从旧字段更改为新字段
3)从模型/ View /模板中完全删除旧字段(名称)
如果没有停机时间,我不明白您的网站用户如何不会在几秒钟内获得“旧”值(取决于表中的行数、重新计算新数据类型的成本等)。 )。
关于Django 重命名并更改模型字段的数据类型,零停机时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2293094/