Джанго. Изменить тип поля UUIDField на CharField - PullRequest
0 голосов
/ 22 мая 2019

Я имел в поле модели пользователя:

class User(PermissionsMixin):

     id = models.UUIDField(primary_key=True,
                           unique=True,
                           default=uuid.uuid4,
                           editable=False)

но мне нужно изменить это поле на

class User(PermissionsMixin):

    id = models.CharField(primary_key=True,
                              unique=True,
                              max_length=32,
                              default=uuid.uuid4,
                              editable=False)

У меня есть база данных postgre. когда я делал миграции, у меня была ошибка:

File "/home/alex/projects/Test/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.DatatypeMismatch: foreign key constraint "users_groups_user_id_f500bee5_fk_users_id" cannot be implemented
DETAIL:  Key columns "user_id" and "id" are of incompatible types: uuid and character varying.

Можете ли вы дать мне несколько советов, как я могу изменить поле с UUIDField на CharField

1 Ответ

0 голосов
/ 22 мая 2019

Я думаю, проблема в том, что вы передаете тип объекта непосредственно в базу данных, попробуйте передать только первичный ключ этого объекта, например, идентификатор, или в вашем случае я могу увидеть его varchar, так что, вероятно, это атрибут String или Char этого объекта UUIDField.

В Java вы просто используете object.getField (), попробуйте то же самое в Python. Расскажи как дела

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