【问题标题】:Creating a migration when factoring out a new model out of an already existing one从现有模型中提取新模型时创建迁移
【发布时间】:2016-08-07 03:55:32
【问题描述】:

我有一些这样的代码:

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 要求我创建一个默认值。我怎么能指定一个?或者,我如何创建一个迁移,根据我们在数据库中已有的地址创建地址,然后将这些地址与项目联系起来?

【问题讨论】:

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


【解决方案1】:

迁移只处理表结构,它们不能为你移动数据:

Django 不能像模式迁移那样自动为您生成数据迁移,但编写它们并不难。

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

【讨论】:

  • 我无法在迁移代码中描述这一步?
  • 可以,详情请见data migrations
猜你喜欢
  • 2021-08-23
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多