可能的方法之一是
UUIDField
link
但是如果你使用这个的默认版本。它将是32位唯一的uuid号。
另一种可能的覆盖方式
save
方法和使用django的helper函数
get_random_string
link
生成6位唯一字符串。我必须提到这种类型的uuid的冲突是(52位字母^6),你必须意识到这一点。
from django.utils.crypto import get_random_string
class MyCustomModel(models.Model):
custom_primary_key = models.CharField(max_length=6, primary_key=True, editable=False, unique=True)
def save(self, *args, **kwargs):
if not self.custom_primary_key:
self.custom_primary_key = get_random_string(6)
return super(MyCustomModel, self).save(*args, **kwargs)