我从
改变了模型standard = models.ManyToManyField(Standard)
到
standard = models.ManyToManyField(Standard, blank=True, null=True)
此应用程序的南方架构移植无法识别此更改?
与此问题类似,未提出答案: South migrations and changes to many-to-may fields
答案 0 :(得分:33)
这种行为是正确的:与null
一起使用时,ManyToManyField
并不代表数据库级别的任何内容。声明ManyToManyField
会导致创建一个中间表来保存关系,虽然Django会为了您的方便在模型实例上创建一个standard
属性,但是没有实际的列可以表示它被搞砸了。根据定义,关系的实例总是零。
blank=False
会对管理员应用产生影响,迫使用户选择至少一种关系。
(请注意,Django的内置迁移系统几乎可以为模型的任何更改创建迁移,无论它是否会影响数据库。因此,此更改可能会导致迁移,但它不会&# 39;影响数据库或是否可能没有关系实例。)