我想在现有模型中添加一个列,在运行“schemamigration --auto”之后,生成的迁移会尝试删除另一个表!为什么会这样做?
我的模型(简化) -
class A(Model):
a = CharField()
b = BooleanField(default=False) # <--- this is the new column
class B(Model): # <---- this is the table South wants to delete
c = CharField()
d = ManyToManyField(A, through='C')
结果迁移 -
def forwards(self, orm):
# Removing M2M table for field d on 'B'
db.delete_table('B_d') # <------- Why is that?
# Adding field 'b'
db.add_column('A', 'b', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False)
答案 0 :(得分:1)
through="C"
关键字表示C
模型将用作关系表。
文档链接:EXTRA FIELDS ON MANY-TO-MANY RELATIONSHIPS
关于直通关键字的其他问题:adding the same object twice to a ManyToManyField
答案 1 :(得分:1)
您是否也在创建m2m B_d的同时添加了直通模型?很难确定没有看到更多的代码,但看起来南方正在抛弃自动连接表,因为现在有一个指定的“通过”模型将用于连接。我也假设模型C确实存在:o)