如何使用 Django 创建简短的 uuid

oyb*_*k.t 5 python django uuid

我有一个模型和 UUID 作为主键字段。UUID id 太长了。我想让它像 YouTube 一样简短。

class Video(models.Model):
    id = models.UUIDField(
        primary_key=True, 
        default=uuid.uuid4, 
        editable=False,
    )
Run Code Online (Sandbox Code Playgroud)

而不是这个

UUID('b39596dd-10c9-42c9-91ee-9e45b78ce3c1')
Run Code Online (Sandbox Code Playgroud)

我只想拥有这个

UUID('b39596dd')
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到上述目标?

Dan*_*man 5

这是一个有点老的问题,但Shortuuidfield可能就是您正在寻找的。


aws*_*ice 1

the 的第一部分uuid被定义为 thetime_low所以我们可以这样做,但它不再是一个uuid.UUID类型。

sample = uuid.uuid4()

UUID('6af2fd74-fbaf-4a9a-a973-8d052634a624')

tl = sample.time_low

1794309492L
Run Code Online (Sandbox Code Playgroud)

然后我们将其转换回十六进制,

hex(int(tl.time_low))[2:]

'6af2fd74'
Run Code Online (Sandbox Code Playgroud)

您可以通过将其拆分为普通字符串来执行相同的操作,但我不明白为什么它很重要。一旦将其分配给变量,它就是给定的,因此您可以根据需要对其进行解析。