如何在Django中生成YouTube风格的唯一字母数字ID模型ID

时间:2019-09-21 21:45:40

标签: django rest model

我不想直接将django id用于django中的视图集,因为这可能揭示项目的数量。
我已经想出了如何生成UUID的方法,该方法可以工作,但是笨拙且十六进制。
有没有办法在django中生成与uuid类似的,保证唯一的,足够长的字母数字字符串?

1 个答案:

答案 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'