一尘不染

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

django

我已经从

standard = models.ManyToManyField(Standard)

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

此应用程序的South schemamigration无法识别更改吗?


阅读 446

收藏
2020-04-03

共1个答案

一尘不染

该行为是正确的:null与一起使用时,在数据库级别并不意味着任何事情ManyToManyField。声明a ManyToManyField会导致创建一个中间表来保存该关系,尽管Django standard为了方便起见会在模型实例上创建一个属性,但没有表示该属性的实际列可以为空。根据定义,该关系始终为零。

blank=False但是,确实会影响验证(例如,在使用诸如admin app之类的模型形式时),迫使用户至少选择一种关系。

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

2020-04-03