Django迁移ForeignKey到IntegerField不丢数据的迁移策略

Django migration strategy for changing ForeignKey to IntegerField without losing data

我有模型

class SomeModel(models.Model):
    target_field = models.ForeignKey(
        'OtherModel', on_delete=models.PROTECT, verbose_name=_('Target Field'),
    )

我想把它改成

class SomeModel(models.Model):
    target_field_id = models.PositiveIntegerField(_('Target field id'))

我想在不丢失通过 ForeignKey 字段存储在 target_field_id 中的数据的情况下执行此操作。

我只是想 运行 进行迁移。但它会删除列然后创建新列。

非常感谢任何帮助。

在 Django 中 ForeignKey 字段将它们的值存储在一个以 _id 结尾的属性中,您可以直接访问它以避免访问数据库。

我建议不要更改属性名称,只需将 target_field = models.ForeignKey 更改为 target_field = models.PositiveIntegerField。没有数据丢失。