TL; DR; 在同一次迁移中更改完全不同的字段,因为引入多对多字段引导中间表没有UNIQUE
约束。
Root挑战。
我需要用多对多替换一对多关系。
步骤一步。
假设我最初有:
class Test(models.Model):
pass
class Test2(models.Model):
title = models.CharField(max_length=100)
test = models.ForeignKey(Test)
将test2.test更改为ManyToMany
class Test(models.Model):
pass
class Test2(models.Model):
title = models.CharField(max_length=100)
tests = models.ManyToManyField(Test)
并且正在运行makemigrations
/ migrate
我正在为对test2_test
+ test_id
获取具有UNIQUE约束的新表test2_id
,这绝对是我期望的。< / p>
但是,一旦我想更新另一个领域:
class Test(models.Model):
pass
class Test2(models.Model):
title = models.TextField()
tests = models.ManyToManyField(Test)
而test2_test
UNIQUE INDEX
+ test_id
test2_id
未获得Error
。
作为一种解决方法,我最终将不同字段的更改移到了单独的迁移中。
问题
有人知道这种行为的原因吗?