我不想直接将django id用于django中的视图集,因为这可能揭示项目的数量。
我已经想出了如何生成UUID的方法,该方法可以工作,但是笨拙且十六进制。
有没有办法在django中生成与uuid类似的,保证唯一的,足够长的字母数字字符串?
答案 0 :(得分:1)
您可能可以执行以下操作(尽管未经测试):
import random, string
def random_id_field():
rnd_id = ''.join(random.choices(string.ascii_letters + string.digits, k=16))
return rnd_id
class MyModel(models.Model):
id = models.Charfield(max_length=16, unique=True, primary_key=True, default=random_id_field)
更新
在Python 3.6中,他们引入了secrets
的概念。这是一个示例:
from secrets import token_urlsafe()
random_string = token_urlsafe(16)
print(random_string)
结果:'x3jFt0X_hZr2B4j6CexixQ'