Python Django密钥违反了唯一约束

Python Django密钥违反了唯一约束,python,django,django-models,Python,Django,Django Models,我有一个奇怪的问题,同一个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.Char

我有一个奇怪的问题,同一个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")
如何获得错误:

django.db.utils.IntegrityError: duplicate key value violates unique constraint "Comment_pkey"
DETAIL:  Key (id)=(uxlt72XrRu-fm260qHo9Zg) already exists.
c=Comment.objects.create(description=“test”)<==有效

c2=Comment.objects.create(description=“test2”)<==违反了唯一约束


那么为什么我的模型每次都不生成一个新的ID呢?同样的事情也发生在测试中,不仅仅是shell。

默认参数的正确用法是:
default=make\u id
。因此,场线应该是:

id = models.CharField(primary_key=True, max_length=28, unique=True,
                      default=make_id, editable=False)

默认参数的正确用法是:
default=make\u id
。因此,场线应该是:

id = models.CharField(primary_key=True, max_length=28, unique=True,
                      default=make_id, editable=False)

迁移可能不起作用,但如果可以传递函数,为什么首先需要lambda?以下是相关文档:迁移可能不起作用,但如果可以传递函数,为什么首先需要lambda?以下是相关文档: