@max3277

Как сделать рандомное значение записи в модели Django?

Есть модель пользователя, где
chars = 'abcdefghijklmnopqrstuvwxyz0123456789'
code = get_random_string(32, chars)
...
ref_code = models.CharField(default=code, unique=True)

Так как пользователи уже существуют, возникает ошибка
django.db.utils.IntegrityError: (1062, "Duplicate entry '4krrtv4eacbn0lw6sii88gkedqm7xn45' for key 'ref_code'")
Оно и понятно, он пытается всем пользователям задать одну и ту же "рандомную" строку.
Как избежать этого на уже существующей модели пользователя?
  • Вопрос задан
  • 559 просмотров
Пригласить эксперта
Ответы на вопрос 2
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
ref_code = models.CharField(default=lambda: get_random_string(32, chars), unique=True)

А вообще чем uuid не угодил?
Ответ написан
alternativshik
@alternativshik
убрать uniq и дефолт, сделать null=True, сделать миграцию, чтобы создать поле, потом сделать datamigration чтобы заполнить все поля рандомом, потом добавить uniq и дефолт и сделать еще раз миграцию
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы