从一对多迁移到多对多:interm。 table没有UNIQUE约束

时间:2017-11-24 22:24:27

标签: django django-models many-to-many django-migrations

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

作为一种解决方法,我最终将不同字段的更改移到了单独的迁移中。

问题

有人知道这种行为的原因吗?

0 个答案:

没有答案