Django 重命名并更改模型字段的数据类型,零停机时间?

标签 django django-models

我在生产应用程序上使用了一个 django 模型,我需要在网站零停机的情况下更改字段的名称和数据类型。这就是我的计划:

1) 在数据库中创建新字段来替换原始字段
2) 每次加载Model实例时,将原始字段的数据转换并存储到新字段中,然后保存对象(仅当新字段为空时才保存对象)
3) 随着时间的推移,一旦每个对象都有一个非空白的新字段,原始字段就可以被删除

第二步我还可以附加什么方法?

最佳答案

您是否必须首先更改业务逻辑(也许还有模板)才能适应新的字段名称?
除非在代码中的数十个位置将内容分配给相关字段,否则您可以(在数据库中创建字段后)

1) 调整代码以识别旧字段(读取)和新字段(名称)(写入)。
2)通过锁定/.update()调用等将数据库中的数据从旧字段更改为新字段
3)从模型/ View /模板中完全删除旧字段(名称)

如果没有停机时间,我不明白您的网站用户如何不会在几秒钟内获得“旧”值(取决于表中的行数、重新计算新数据类型的成本等)。 )。

关于Django 重命名并更改模型字段的数据类型,零停机时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2293094/

相关文章:

Django - 限制允许输入到文本框中的字符数量

mysql - 使用 django 上的查询创建表

database - 我们可以跨多个 oracle 用户查询多个表并在 Django 的管理 UI 中将行表格化吗

python - 如何在不耗尽内存的情况下迭代 Django 中的大表?

django - 如何在django中创建密码输入字段

javascript - 如果模型中不存在数据,则使用 django 保存数据,如果数据存在则更新

django - 如何从 Django Form FileField 中提取文件对象

python - 如何使用 Django 安装自定义 SQL

python - 如何在 Django Admin 中向用户显示数据库错误

python - use_for_related_fields 如何在 Django 中工作?