【问题标题】:Fixing error "Badly formed hexadecimal UUID string" after converting existing id to uuid in Django (Django 3.0)在 Django (Django 3.0) 中将现有 id 转换为 uuid 后修复错误“格式错误的十六进制 UUID 字符串”
【发布时间】:2020-05-31 16:31:45
【问题描述】:

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

【问题讨论】:

    标签: python django python-3.x uuid django-3.0


    【解决方案1】:

    在此之前,请仔细检查您在 Cascade 上没有任何外键。然后,而不是更改 id = models.IntegerField() 的类型:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 2015-12-03
      • 2022-01-15
      • 1970-01-01
      • 2023-01-28
      • 1970-01-01
      相关资源
      最近更新 更多