我刚刚跳入 Django 进行一个快速项目,我想有一个UUID字段 https://docs.djangoproject.com/en/2.2/ref/models/fields/#uuidfield在模型中。
我将其用于外部 id 字段,每个模型都必须公开该对象。会不会default
参数处理唯一性还是我必须将其写入保存中?我的意思是我知道实际上不会有价值观冲突的机会,但只是想知道它的内部是如何完成的
UUID模块如何保证每次的值都是唯一的?
RFC 4122 https://www.rfc-editor.org/rfc/rfc4122.html(UUID模块规范)指定了三种生成UUID的算法:
- 使用 IEEE 802 MAC 地址作为唯一性来源
- 使用伪随机数
- 使用众所周知的字符串与加密散列相结合
在所有情况下,种子值都与系统时钟 and a 时钟序列值(为了在时钟向后设置的情况下保持唯一性)。因此,根据上述机制生成的 UUID 将与已分配或将要分配的所有其他 UUID 不同。
摘自 RFC 4122Abstract https://www.rfc-editor.org/rfc/rfc4122.html:
UUID长度为128位,可以保证跨空间和跨空间的唯一性
时间。
Note:由于 UUIDS 的这种唯一性属性,Django 内部不会进行检查(如 @FlipperPA 提到的)来检查是否已经存在另一个具有相同属性的对象。uuid
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)