python
data_error
ai_generated
true
验证错误:模型字段“test”不是有效的 UUID
django.core.exceptions.ValidationError: {'model': [ValidationError(['“test” is not a valid UUID.'])]}
ID: python/django-model-foreignkey-validation
80%修复率
82%置信度
0证据数
2024-05-10首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.2 | active | — | — | — |
| 4.0 | active | — | — | — |
根因分析
外键字段期望 UUID 类型,但传入了无效的字符串值
English
外键字段赋值了非 UUID 格式的字符串,但模型期望 UUID 类型
解决方案
-
100% 成功率 传入有效的 UUID 字符串
import uuid; model_instance.foreign_key = uuid.UUID('550e8400-e29b-41d4-a716-446655440000') -
95% 成功率 使用 UUID 对象而不是字符串
from uuid import UUID; model_instance.foreign_key = UUID('550e8400-e29b-41d4-a716-446655440000')
无效尝试
常见但无效的做法:
-
忽略验证直接保存
100% 失败
Django 在保存前会进行字段验证,无法绕过
-
将字段类型改为 CharField
60% 失败
改变模型结构需要迁移,且可能破坏外键关系