Django的。将文件类型UUIDField更改为CharField

时间:2019-05-22 20:37:44

标签: django postgresql migration

我在用户模型字段中有

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 :(得分:-2)

我认为问题是您正在直接将对象类型传递给数据库,请尝试仅传递该对象的主键,例如id,或者在您的情况下,我可以看到其varchar,因此它可能是String或该对象UUIDField的字符。

在Java中,您只需使用object.getField(),然后在Python中尝试相同的操作。告诉我怎么回事