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
。没有数据丢失。
我有模型
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
。没有数据丢失。