python - 在 Django (Django 3.0) 中将现有 id 转换为 uuid 后修复错误“格式错误的十六进制 UUID 字符串”
问题描述
我创建了一个带有初始 IntegerField 主键的表,后来将 id 更改为 UUIDField。现在这引发了“格式错误的十六进制 UUID 字符串”,我猜是因为诸如“1”之类的数字不是有效的 UUID 值。在更新 django 应用程序的 models.py 文件时,有谁知道在代码中解决这个问题的简洁方法?
解决方案
在此之前,请仔细检查您是否在此模型上使用 Cascade 没有任何外键。然后,而不是改变类型id = models.IntegerField()
:
- 创建一个新字段
uuid = models.UUIDField(default=uuid.uuid4, primary=True)
(默认将设置现有行的字段) - 进行迁移
- 删除
id
字段 - 进行迁移
- 将该
uuid
字段重命名为id
- 进行迁移
- 迁移
但是,您应该知道删除id
字段和/或命名字段uuid
不是强制性的,保留两者通常是个好主意。
推荐阅读
- python - 在偶数月和月末过滤python中的一系列日期
- python - 为 dockerfile 打包多个 python 包
- python - Plotly:如何更改 x 轴值的格式?
- node.js - 在静态 URL adonisJS 上发送令牌
- c++ - mingw32/bin/ld.exe ... 未定义对 [class] 的引用 ... collect2.exe:错误:ld 返回 1 退出状态
- freecad - 在 Z 轴上移动一个 egde
- python - 在文章不存在标签或预期输出摘要的情况下,使用 BERT 进行文章摘要
- swiftui - ChildView 中不同的部分标题样式
- redis - Redis:如何计算排序列表时间序列中的时间差?
- r - 设置 wd 的问题