在从现有模型中分解出新模型时创建迁移

时间:2016-04-15 09:00:14

标签: python django django-models django-orm django-migrations

我有一些像这样的代码:

class Item(models.Model):
  something = models.ForeignKey('SomethingElse')
  property1 = models.TextField()
  city = models.TextField()
  street = models.TextField()
  country = models.TextField()

我想像这样塑造它:

class Address(models.Model):
  city = models.TextField()
  street = models.TextField()
  country = models.TextField()

class Item(models.Model):
  something = models.ForeignKey('SomethingElse')
  property1 = models.TextField()
  address = models.ForeignKey('Address')

尝试迁移项目时,Django要求我创建一个默认值。我怎么指定一个?或者,我如何创建一个迁移,根据我们在数据库中已有的内容创建地址,然后将这些地址与项目绑定?

1 个答案:

答案 0 :(得分:1)

迁移仅处理表格结构,他们无法为您移动数据:

  

Django无法为您自动生成数据迁移,就像使用模式迁移一样,但编写它们并不是很难。

您应该在进行此更改之前添加Address模型,手动迁移数据,然后然后Item模型中删除冗余字段。您可以使用data migrations在迁移中包含这些更改。