首页 文章

在一个活的应用程序上将数据从一个django模型移动到另一个(django south)

提问于
浏览
3

我正在尝试将一些django模型中的某些字段移动到新模型中 . 我们假设我有一个书模型:

class Book(models.Model):
  title = models.CharField(max_length=128)
  author = models.CharField(max_length=128)

我决定我需要一个单独的作者模型(添加额外的数据等) . 因此,请记住,我有一个运行的应用程序填充数据,保持兼容性的所需布局将是:

class Author(models.Model):
  name = models.CharField(max_length=128, null=True) # null at first; filled with datamigration
  nationality = models.CharField(max_length=64, null=True) # we don't have nationality for existing authors, but we'll ask the new ones

class Book(models.Model):
  title = models.CharField(max_length=128)
  author_model = models.ForeignKey(Author, null=True)
  @property
  def author(self):
    return self.author_model.name
  @author.setter
  def author(self, newval):
    self.author_model.name = newval

这样我就必须创建添加作者的模式迁移,然后创建数据迁移以传输数据并填写author_model_id用于书籍,最后创建数据迁移以从“books”表中删除“author”列 . 问题是,将Book.author从字段更改为属性后,我的迁移是否有效?我的意思是,如果在之前的一次迁移中南试图访问Book.author(期望一个CharField),它实际上会获得一个试图获得不存在的模型的属性 . 怎么做对了?

1 回答

相关问题