我的 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,“重复条目'fc1d481d-add2-4d9c-92d9-a1b05018730a'键'api_key'”)
运行迁移时。
首先,我觉得这很可疑,因为 django 将为 any 提供不同的值default=uuid.uuid4。我尝试迁移了几次,但我得到了同样的错误,但使用了不同的密钥。其次,我试图删除unique=True,但这并没有改变任何东西,错误是一样的。
知道为什么以及如何解决这个问题吗?
编辑:
我发现为什么会发生这种情况......我的表中已经有一些记录,并且在迁移时,djangoapi_key为所有现有记录添加了具有相同默认值的新列。(我在删除unique字段并删除最新迁移后发现了这个)
它确实会为新记录添加不同的值,但我怎样才能让它为表中的现有记录添加不同的值?