Вы, вероятно, можете сделать что-то вроде этого (хотя и не проверено):
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'