Как я могу создать уникальный стиль буквенно-цифровой идентификатор модели в стиле YouTube в Django - PullRequest
0 голосов
/ 22 сентября 2019

Я не хочу использовать идентификатор django напрямую для наборов представлений в django, так как это потенциально показывает количество элементов.
Я уже выяснил, как генерировать UUID, которые работают, но они громоздкие и шестнадцатеричные.
Есть ли способ создать гарантированно уникальную буквенно-цифровую строку достаточно длинной в django, похожую на uuid?

1 Ответ

1 голос
/ 22 сентября 2019

Вы, вероятно, можете сделать что-то вроде этого (хотя и не проверено):

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'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...