如何用Django创建简短的uuid

时间:2017-08-10 18:23:38

标签: python django uuid

我有一个模型和UUID作为主键字段。 UUID id太长了。我希望将其缩短为类似于YouTube。

class Video(models.Model):
    id = models.UUIDField(
        primary_key=True, 
        default=uuid.uuid4, 
        editable=False,
    )

而不是这个

UUID('b39596dd-10c9-42c9-91ee-9e45b78ce3c1')

我想要这个

UUID('b39596dd')

我如何实现上述目标?

3 个答案:

答案 0 :(得分:0)

uuid的第一部分定义为time_low,因此我们可以执行此操作,但它不再是uuid.UUID类型。

sample = uuid.uuid4()

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

tl = sample.time_low

1794309492L

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

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

'6af2fd74'

你可以将它作为普通字符串拆分来做同样的事情,但我不明白为什么这很重要。一旦将其分配给变量,它就是给定的,因此您可以根据自己的选择进行解析。

答案 1 :(得分:0)

一个古老的问题,但shortuuidfield可能正是您要寻找的。

答案 2 :(得分:0)

default=uuid.uuid4更改为default=uuid.uuid4().hex[:8]