進出口使用Django的領域是這樣的:Django的UUIDField - 把它縮短
import uuid
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
一個典型的ID應該是這樣的:
6abbde08-99b1-42c7-8bd2-3ec92a4b67b9
是否有可能使ID短,東西像99b1?
進出口使用Django的領域是這樣的:Django的UUIDField - 把它縮短
import uuid
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
一個典型的ID應該是這樣的:
6abbde08-99b1-42c7-8bd2-3ec92a4b67b9
是否有可能使ID短,東西像99b1?
UUID字段的一點是,兩個uuids產生的衝突極不可能發生。您不能將99b1
存儲在UUID
字段中,因爲它不是UUID。
您可以使用最大長度爲4的CharField
作爲主鍵,但是您將負責生成主鍵並確保它們不會相互衝突。
我認爲限制UUIDField
的長度不是一個好主意。 UUIDField
的全部要點是產生一個唯一的通用標識符,它不可能產生具有與現有值相同的值的另一個UUID
。
如果你想截斷長度,你可以這樣做,但它可能會導致衝突,你會得到2相同的ids
,你肯定不想要。
當生成一個隨機數時,UUID會考慮多個參數,所以使用UUIDField
時,您不必擔心以前的ids
生成的是相同的。
UUID值是128位長,「可以保證空間和時間上的唯一性」。