#django #django-models #uuid
Вопрос:
Сначала я создал таблицу пользователей в user_app, где она обычно заполняла идентификатор каждого пользователя, например 1,2,3,4… и так далее .
class CustomUser(AbstractUser):
user_id = models.BigAutoField(primary_key=True)
Позже я обновил BigAutoField до UUIDField :
class CustomUser(AbstractUser):
user_id = models.UUIDField(primary_key=True,default=uuid.uuid4, editable=False)
теперь в базе данных есть несколько пользователей, у которых 1,2,3,4.. и так далее в качестве идентификатора, а остальные имеют идентификатор в формате UUID .
Все работает нормально, но проблема здесь в том, что всякий раз, когда я нажимаю на пользователей в панели администратора, это показывает мне ошибку
value = uuid.UUID(value)
File "C:UsersdivitAppDataLocalProgramsPythonPython38libuuid.py", line 169, in
__init__
raise ValueError('badly formed hexadecimal UUID string')
ValueError: badly formed hexadecimal UUID string
есть ли какой-либо способ обновить идентификатор других пользователей с 1,2,3…. в качестве идентификатора или есть способ удалить этих пользователей? поскольку я не могу удалить его из панели администратора, потому что всякий раз, когда я нажимаю на пользователей, он показывает мне плохо сформированную шестнадцатеричную ошибку строки UUID
Комментарии:
1. DJango стремится прочитать целое число как строку UUID, и это, таким образом, не удается, потому
1
что и2
не являются UUID.2. Как правило, вы должны были сделать это в несколько этапов, т. Е. 1. Добавьте новое поле для uuid, которое можно обнулить. 2. Выполните перенос данных для заполнения этого поля. 3. Измените это новое поле на pk и удалите старое поле (плюс переименуйте, если необходимо). Если вы не возражаете против потери базы данных (и не находитесь в производстве), просто удалите / удалите ее (также удалите свои миграции и создайте новые).