修复错误“在Django(Django 3.0)中将现有ID转换为uuid后格式错误的十六进制UUID字符串”

问题描述 投票:0回答:1

我创建了一个带有初始IntegerField主键的表,后来将ID更改为UUIDField。现在,这会引发一个“格式不正确的十六进制UUID字符串”,我猜是因为诸如“ 1”之类的数字不是有效的UUID值。在为django应用程序更新models.py文件时,有人知道在代码中解决此问题的简洁方法吗?

python django python-3.x uuid django-3.0
1个回答
0
投票

[在进行所有操作之前,请仔细检查您是否没有使用Cascade的外键,以使该模型成为可能。然后,不要更改id = models.IntegerField()的类型:

  • 创建一个新字段uuid = models.UUIDField(default=uuid.uuid4, primary=True)(默认将为现有行设置该字段)
  • 进行迁移
  • 删除id字段
  • 进行迁移
  • uuid字段重命名为id
  • 进行迁移
  • 迁移

但是,您应该知道删除id字段和/或命名uuid不是强制性的,并且通常都保留两者都是一个好主意。

© www.soinside.com 2019 - 2024. All rights reserved.