gpt4 book ai didi

django - 将 PositiveIntegerField 迁移到 FloatField

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:39 24 4
gpt4 key购买 nike

我有一个现有的填充数据库,我想将 PositiveIntegerField 转换为 FloatField。我正在考虑简单地进行迁移:

    migrations.AlterField(
model_name='mymodel',
name='field_to_convert',
field=models.FloatField(
blank=True,
help_text='my helpful text',
null=True),
),

当前字段定义为:

field_to_convert = models.PositiveIntegerField(
null=True,
blank=True,
help_text='my helpful text')

这是否需要完全重写数据库列?对于更大的数据库,这种转换的扩展性如何?如果绝大多数值都是 null,它会如何扩展?这种转换在什么情况下会失败?如果有所不同,这是由 Postgres 数据库支持的。

最佳答案

这是否需要完全重写数据库列?

不,不会。我用 PostgreSQL、MySQL 和 SQLite 做了一个实验,从整数到 float 的转换在每种情况下都很顺利,我还将一些值设置为 null 以匹配您的情况。

如果您有一个值 3,它只会更改为 3.0

如果绝大多数值为空,它会如何扩展?

好吧,由于您在字段的配置中保留了 null=True,因此所有空值都将保持为空,这没有问题。如果删除 null=True,您可能需要指定一个 default 值。

这种转换在什么情况下会失败?

获取一个 int 列并将其转换为 float(real)应该不会失败,如果你发现一个奇怪的、奇怪的和非常特殊的情况,那将是一个非常大的发现。

如果您对迁移结果有疑问...

...您可以先使用 sqlmigrate 查看迁移 SQL ,当然,您可以备份您的数据库。

关于django - 将 PositiveIntegerField 迁移到 FloatField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487527/

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