#python #django #random
Вопрос:
Что я должен сделать с моим простым кодом ниже, чтобы он возвращал только числовые значения?
>>> from django.utils.crypto import get_random_string
>>> get_random_string(10)
>>> 'PhaWT9X02U'
Что-то вроде: 1067603657
И если это возможно, можете ли вы порекомендовать поле идентификатора, сгенерированное таким образом?
Ответ №1:
Добавить allowed_chars
get_random_string(10, allowed_chars='0123456789')
И использовать в качестве идентификатора:
def random_id():
random_str = get_random_string(10, allowed_chars='0123456789')
return int(random_str)
И добавьте поле идентификатора в свою модель вот так:
id = models.IntegerField(primary_key=True, default=random_id, editable=False)
Комментарии:
1. Большое спасибо @Reza Heydari, так что можете ли вы рекомендовать этот метод в качестве способа создания идентификатора с primary_key=True, гарантирующего очень малую вероятность возврата дубликата?
2. Нет никакой гарантии, что функция не вернет дубликат, но я думаю, что django пытается добавить уникальное значение для id.