3
我試圖從一個Django模型的一些字段移動到一個新的。假設我有一本書型號:將數據從一個Django模型移動到另一個(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
這樣我就必須創建schemamigration,增加了作者,然後datamigration傳輸數據並填寫author_model_id以獲取書籍,最後進行數據遷移以從「books」表中刪除「author」列。問題是,將Book.author從字段更改爲屬性後,我的遷移將有效嗎?我的意思是,如果在之前的遷移中South嘗試訪問Book.author(期望CharField),它實際上會獲得一個嘗試獲取不存在模型的屬性。如何做到這一點?
謝謝,這很有道理 - 重命名爲「作者」的東西不會觸發屬性。 – 2013-05-02 09:42:29
另外,由於您正在更新模型,因此您可能需要考慮是否要支持具有多個作者的圖書。 (因此有一個ManyToMany字段)。 – related 2013-05-02 09:54:16