【问题标题】:Django migration strategy for changing ForeignKey to IntegerField without losing dataDjango迁移策略,将ForeignKey更改为IntegerField而不丢失数据
【发布时间】:2020-06-05 10:30:12
【问题描述】:

我有模特

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 中的数据。

我只是尝试运行 makemigrations。但它会删除列然后创建新列。

非常感谢任何帮助。

【问题讨论】:

    标签: python django django-models django-migrations


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 2021-07-19
      • 2017-08-24
      • 1970-01-01
      • 2017-03-03
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多