luc*_*luc 5 python django django-south
我想在django应用程序中更改ManyToMany字段.
我有以下型号:
class A:
...
class B:
as = models.ManyToManyField(A)
Run Code Online (Sandbox Code Playgroud)
而且我要:
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)
Run Code Online (Sandbox Code Playgroud)
我正在使用南进行数据库迁移.不幸的是,在这种情况下,南方建议删除现有的app_b_a表并重新创建一个新表app_c.
有没有办法说南方不要重新创建m2m表?
我会尝试以下方式:
C模型但不添加任何额外的数据字段.只需将2个FK设置为链接模型,这样它的模式实际上与默认的m2m表相同,但表名除外.schemamigration --auto为您的应用运行.forwards/ backwardsmethods中删除所有生成的迁移代码并添加:
forward: db.rename_table('yourappname_m2mtablename', 'yourappname_c')
向后: db.rename_table('yourappname_c', 'yourappname_m2mtablename')C模型并为其生成新的模式迁移.| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |