Django UUIDField - 缩短时间

时间:2015-08-28 09:36:21

标签: django django-models uuid

我正在使用像这样的django字段:

import uuid   
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

典型的ID如下所示:

6abbde08-99b1-42c7-8bd2-3ec92a4b67b9

是否可以缩短ID,使其更像 99b1

2 个答案:

答案 0 :(得分:4)

UUID字段的意思是生成的两个uuids极不可能发生碰撞。您无法将99b1存储在UUID字段中,因为它不是UUID。

您可以使用最长为4的CharField作为主键,但是您将负责生成主键,并确保它们不会发生冲突。

答案 1 :(得分:3)

我认为限制UUIDField的长度并不是一个好主意。 UUIDField的重点是生成一个唯一的通用标识符,它不会产生与现有标识符具有相同值的另一个UUID

如果你想截断长度,你可以这样做,但它可能会导致碰撞,你会得到2个你当然不想要的ids

UUID在生成随机数时会考虑多个参数,因此使用UUIDField时,您无需担心永久生成ids

  

UUID值长度为128位,“可以保证唯一性   空间和时间“。