gpt4 book ai didi

python - 如何使用 Django 将 postgres 表默认 ID 设置为 uuid_generate_v4()

转载 作者:行者123 更新时间:2023-11-29 14:26:26 33 4
gpt4 key购买 nike

我被告知将我的 Django 项目中的所有表默认 ID 设置为 postgresql 方法 uuid_generate_v4() 的值。

我正在使用的当前模型的一个示例是:

import uuid

from django.db import models

class MyModel(models.Model):
class Meta:
ordering = ("my_var",)

id = models.UUIDField(primary_key=True, default=uuid.uuid4, blank=True, editable=False)
my_var = models.CharField(max_length=64, unique=True)

我已经明白,不建议将 SQLAlchemy 与 Django 混合使用,那么我怎样才能最好地实现要求我做的事情呢?

(注意:是的,default=uuid.uuid4 不足以满足我的项目要求)

最佳答案

您可以使用Django 的Func 来调用内置的数据库函数。其实对于PostgreSQL,Django是支持RandomUUID的定义如下:

class RandomUUID(Func):
template = 'GEN_RANDOM_UUID()'
output_field = UUIDField()

可以这样调用:

from django.contrib.postgres.functions import RandomUUID

class MyModel(models.Model):
id = models.UUIDField(primary_key=True, default=RandomUUID)

因此,如果 postgreSQL gen_random_uuid() 不是您所需要的(显然它与 uuid_generate_v4() 不同,如 here 所述),只需创建您自己的 Func 类用 template = 'UUID_GENERATE_V4()'

替换模板

关于python - 如何使用 Django 将 postgres 表默认 ID 设置为 uuid_generate_v4(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57361570/

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