我想在Django应用中更改ManyToMany字段。
我有以下模型:
class A:
...
class B:
as = models.ManyToManyField(A)
而且我要:
class A:
...
class C:
a = models.ForeignKey(A)
b = models.ForeignKey("B")
extra_data = models.BooleanField(default=False)
class B:
as = models.ManyToManyField(A, through=C)
我正在向南进行数据库迁移。不幸的是,在这种情况下,south prose删除了现有的
app_b_a
表并重新创建了一个新的app_c
。有没有办法向南方说不要重新创建M2M表?
最佳答案
我将尝试通过以下方式进行操作:
C
模型,但是不添加模型呢。只需将2个FK设置为链接模型,以使其架构实际上与默认的m2m表相同,但表名除外。 schemamigration --auto
。 forwards
/backwards
方法中删除所有生成的迁移代码,然后添加:转发:
db.rename_table('yourappname_m2mtablename', 'yourappname_c')
向后: db.rename_table('yourappname_c', 'yourappname_m2mtablename')
C
模型并为其生成新的schemamigration。 关于python - 在对ManyToMany字段使用 'through'时,如何向南迁移?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7878605/