2015-08-28 72 views
3

進出口使用Django的領域是這樣的:Django的UUIDField - 把它縮短

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

一個典型的ID應該是這樣的:

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

是否有可能使ID短,東西像99b1

回答

4

UUID字段的一點是,兩個uuids產生的衝突極不可能發生。您不能將99b1存儲在UUID字段中,因爲它不是UUID。

您可以使用最大長度爲4的CharField作爲主鍵,但是您將負責生成主鍵並確保它們不會相互衝突。

3

我認爲限制UUIDField的長度不是一個好主意。 UUIDField的全部要點是產生一個唯一的通用標識符,它不可能產生具有與現有值相同的值的另一個UUID

如果你想截斷長度,你可以這樣做,但它可能會導致衝突,你會得到2相同的ids,你肯定不想要。

當生成一個隨機數時,UUID會考慮多個參數,所以使用UUIDField時,您不必擔心以前的ids生成的是相同的。

UUID值是128位長,「可以保證空間和時間上的唯一性」。