看起来像这样应该是“容易”或至少记录在某个地方,我只是无法找到它。将“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