将ManyToManyField迁移为null tr​​ue,空白为true,无法识别

时间:2013-08-14 21:58:39

标签: django django-models database-schema django-south django-orm

我从

改变了模型
standard = models.ManyToManyField(Standard)

standard = models.ManyToManyField(Standard, blank=True, null=True)

此应用程序的南方架构移植无法识别此更改?

与此问题类似,未提出答案: South migrations and changes to many-to-may fields

1 个答案:

答案 0 :(得分:33)

这种行为是正确的:与null一起使用时,ManyToManyField并不代表数据库级别的任何内容。声明ManyToManyField会导致创建一个中间表来保存关系,虽然Django会为了您的方便在模型实例上创建一个standard属性,但是没有实际的列可以表示它被搞砸了。根据定义,关系的实例总是零。

但是,

blank=False会对管理员应用产生影响,迫使用户选择至少一种关系。

(请注意,Django的内置迁移系统几乎可以为模型的任何更改创建迁移,无论它是否会影响数据库。因此,此更改可能会导致迁移,但它不会&# 39;影响数据库或是否可能没有关系实例。)