плохо сформированная шестнадцатеричная строка UUID в DJANGO

#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 и удалите старое поле (плюс переименуйте, если необходимо). Если вы не возражаете против потери базы данных (и не находитесь в производстве), просто удалите / удалите ее (также удалите свои миграции и создайте новые).