看起來像這樣應該是「容易」或至少記錄在某個地方,我只是無法找到它。將「through」表添加到django字段並使用South遷移?
可以說我有一個模型:
class A(models.Model):
users = models.ManyToMany('auth.User', blank=True)
現在我想遷移到有一個through
表字段添加到多對多關係...
class AUsers(models.Model):
user = models.ForeignKey('auth.User')
a = models.ForeignKey('A')
new_field = models.BooleanField()
class A(models.Model):
users = models.ManyToMany('auth.User', blank=True, through='AUsers')
然後我做的:
% ./manage.py schemamigration app --auto
不是完全令人驚訝,它告訴我它將放棄原來的自動創建通過表格創建一個新的AUsers
。現在最好的做法是什麼?是否有體面的方式遷移到新的through
表中?我在Meta中使用db_table
嗎?我只是沒有立即使用through=...
...然後做一個schemamigration --auto
,然後datamigration
複製當前表(不知何故,不知道...),然後添加through
關係,讓它殺死表?
這裏有什麼竅門?這真的很難嗎?
是的,我有點想知道這是否需要手動遷移。看起來,既然你也這樣想......那是對的。 db_table也是我想我也必須要做的。只是看起來像只是因爲它的遷移歷史而不存在的「殘餘」,但我想這就是我要做的。我會標記接受,如果/當它的工作。 – dlamotte 2011-05-19 20:24:08
您還需要添加unique_constraint以使遷移「完成」。我覺得這有點太複雜了......至少比它需要的更多?我會把這個開放幾天,看看有人有更好的解決方案...我想看到一個...也許我需要破解南加入未來? – dlamotte 2011-05-19 20:55:26
@dlamotte我自己也會遇到同樣的情況。你可以(現在,我不知道那時候)使用'db.rename_table'將表名改爲任何你想要的。 – antitoxic 2015-07-07 15:19:34