Django UUIDField - 使其更短

4

我正在使用 Django 字段,就像这样:

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

一个典型的id看起来是这样的:
6abbde08-99b1-42c7-8bd2-3ec92a4b67b9

有没有可能将id缩短,变成类似99b1这样的形式?

2个回答

4

UUID字段的作用在于生成的uuid几乎不可能发生碰撞。你无法将99b1存储在UUID字段中,因为它不是UUID。

你可以使用最大长度为4的CharField作为主键,但这意味着你需要负责生成主键,并确保它们不会发生碰撞。


2
我认为限制UUIDField字段的长度并不是一个好主意。UUIDField的整个意义在于生成独特的通用标识符,这种标识符不可能生成另一个与现有标识符相同值的UUID
如果您想截断长度,您可以这样做,但这可能会导致冲突,并且您将获得2个相同的ids,这肯定不是您想要的。
当生成随机数时,UUID考虑了多个参数,因此使用UUIDField,您无需担心生成相同的ids

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接