Django 键违反唯一约束
Django key violates unique constraint
我有一个奇怪的问题,生成相同的 PK 给我错误:
django.db.utils.IntegrityError: duplicate key value violates unique constraint "Comment_pkey"
DETAIL: Key (id)=(uxlt72XrRu-fm260qHo9Zg) already exists.
这是我的模型:
class Comment(models.Model):
id = models.CharField(primary_key=True, max_length=28, unique=True,
default="make_id()", editable=False)
description = models.TextField(max_length=255)
生成ID的函数:
def make_id():
return base64.b64encode(uuid.uuid4().bytes).decode("utf-8")
我是如何得到错误的:
c = Comment.objects.create(description="test") < ==== works
c2 = Comment.objects.create(description="test2") < === violates unique constraint
那么,为什么我的模型不是每次都生成新的 ID?同样的事情发生在测试中,而不仅仅是 shell.
默认参数的正确用法是:default=make_id
。因此,场线将是:
id = models.CharField(primary_key=True, max_length=28, unique=True,
default=make_id, editable=False)
我有一个奇怪的问题,生成相同的 PK 给我错误:
django.db.utils.IntegrityError: duplicate key value violates unique constraint "Comment_pkey"
DETAIL: Key (id)=(uxlt72XrRu-fm260qHo9Zg) already exists.
这是我的模型:
class Comment(models.Model):
id = models.CharField(primary_key=True, max_length=28, unique=True,
default="make_id()", editable=False)
description = models.TextField(max_length=255)
生成ID的函数:
def make_id():
return base64.b64encode(uuid.uuid4().bytes).decode("utf-8")
我是如何得到错误的:
c = Comment.objects.create(description="test") < ==== works
c2 = Comment.objects.create(description="test2") < === violates unique constraint
那么,为什么我的模型不是每次都生成新的 ID?同样的事情发生在测试中,而不仅仅是 shell.
默认参数的正确用法是:default=make_id
。因此,场线将是:
id = models.CharField(primary_key=True, max_length=28, unique=True,
default=make_id, editable=False)