gpt4 book ai didi

python - 返回十六进制 UUID 作为 Django 模型字符字段的默认值

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:28 25 4
gpt4 key购买 nike

我试图用从 uuid4 生成的标识符创建一个模型。但我想要的不是常规 uuid,而是我想要的标识符具有十六进制 uuid 格式(不带“-”)。这是我尝试过的:

class Model(models.Model):

identifier = models.CharField(max_length=32, primary_key=True, default=uuid.uuid4().hex, editable=False)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)

def __str__(self):
return self.identifier

class Meta:
abstract = True

因为 uuid4(),它不会在每次实例化继承的类时返回唯一的 id,而是返回相同的 id。我试图将默认值从 uuid.uuid4().hex 更改为 uuid.uuid4.hex 但似乎 hex 不可调用直接来自 uuid4。那么从十六进制格式的 uuid 为我的标识符生成默认值的可能方法是什么?

最佳答案

你需要让它可调用

default=lambda: uuid.uuid4().hex

更新

正如@ZulwiyozaPutra 指出的那样。迁移时解决方案失败,我完全忘记了 Django 无法序列化 Lambdas。

解决方案是定义具有所需行为的新函数:

def hex_uuid():
return uuid.uuid4().hex

并将此函数用作默认参数可调用:

identifier = models.CharField(default=hex_uuid, ...)

关于python - 返回十六进制 UUID 作为 Django 模型字符字段的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48438569/

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