我的Django迁移有问题。在进行更改之前,我的表包含以下列:
STATUS = (
('Active', 'Active'),
('Pending', 'Pending'),
('Incomplete', 'Incomplete')
)
id = models.CharField(primary_key=True, max_length=50, unique=True, editable=False, default=uuid.uuid4)
name = models.CharField(max_length=100, null=False, default='')
country = models.CharField(max_length=100, choices=COUNTRY, null=True, blank=True)
postcode = models.CharField(max_length=20, null=False, blank=True)
address = models.TextField(max_length=200, null=False, blank=True)
status = models.CharField(max_length=20, choices=STATUS, default='Pending')
created_on = models.DateTimeField(default=timezone.now, editable=False)
balance = models.DecimalField(default='0.00', max_digits=16, decimal_places=2, null=True, editable=True)
但是当我添加新字段时:
api_key = models.CharField(max_length=50, unique=True, editable=False, default=uuid.uuid4)
key_exp = models.DateTimeField(default=one_day_hence, editable=False)
我不断得到
django.db.utils.IntegrityError:(1062,“重复项 密钥'api_key'的'fc1d481d-add2-4d9c-92d9-a1b05018730a'')
运行迁移时。
首先,我觉得这很可疑,因为django将为任何default=uuid.uuid4
提供不同的值。我尝试了几次迁移,但是遇到相同的错误,但密钥不同。
其次,我尝试删除unique=True
,但这没有任何改变,错误是相同的。
有人知道为什么以及如何解决这个问题吗?
编辑:
我发现了为什么会发生这种情况...表中已经有一些记录,并且在迁移时,django为所有现有记录添加了具有相同默认值的新列api_key
。 (我在删除unique
字段并删除了最新的迁移之后发现了这一点)
它确实会为新记录添加一个不同的值,但是如何使它为表中的现有记录添加一个不同的值?