我有一个模型和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')
我如何实现上述目标?
答案 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可能正是您要寻找的。 p>
答案 2 :(得分:0)
将default=uuid.uuid4
更改为default=uuid.uuid4().hex[:8]