gpt4 book ai didi

Django和数据库生成的uuid

转载 作者:行者123 更新时间:2023-11-29 12:25:36 27 4
gpt4 key购买 nike

我正在使用 Django 和 DRF 创建一个 rest api。我不想将 ID 直接暴露给客户端,所以我尝试像这个例子一样设置我的模型:

class AbstractGuidModel(models.Model):
uuid = models.UUIDField(blank=True, default=uuid.uuid4, unique=True, editable=False)

class Meta:
abstract = True

class MyModel(AbstractGuidModel):
name = models.CharField(max_length=NAME_LENGTH)

由于 AbstractGuidModel 有 default=uuid.uuid4,uuid 由 python 代码生成,迁移看起来像:

CREATE TABLE "MyModel" ( ... "uuid" uuid NOT NULL UNIQUE, ... );

我读过 Postgres 有一个自动生成 uuid 的扩展。

安装扩展后,我如何告诉 django 让数据库使用他自己的扩展而不让他使用 Python uuid 模块创建它们?

最佳答案

当你在 Django 中使用 UUIDField 作为主键时,它不会为你生成一个 UUID,你在保存对象之前自己生成它。您的代码可以做到这一点并且工作正常。

UUIDField 将根据 Postgres UUID 字段存储。

关于Django和数据库生成的uuid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40041812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com