2017-08-10 20 views
1

我有一个模型和UUID作为主键字段。 UUID ID太长。我希望将其缩短为与YouTube类似。如何使用Django创建简短的uuid

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

取而代之的是

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

我想刚才这个

UUID('b39596dd') 

我怎样才能实现上述?

+0

为什么不使用CharField并为该字段经常创建uuid pk? –

+0

@ArpitSolanki似乎工作太多了,我该怎么做? – if237912print

回答

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' 

你可以做同样的事情刚拆分它作为一个正常的字符串,但我不明白为什么它很重要。一旦你将它赋值给一个变量,那么你可以根据你的选择来解析它。

+0

它有多独特?在什么时候它可能会导致问题? – if237912print