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

其他格式: JSON · Markdown 中文 · English
80%修复率
82%置信度
0证据数
2024-05-10首次发现

版本兼容性

版本状态引入弃用备注
3.2 active
4.0 active

根因分析

外键字段期望 UUID 类型,但传入了无效的字符串值

English

外键字段赋值了非 UUID 格式的字符串,但模型期望 UUID 类型

generic

解决方案

  1. 100% 成功率 传入有效的 UUID 字符串
    import uuid; model_instance.foreign_key = uuid.UUID('550e8400-e29b-41d4-a716-446655440000')
  2. 95% 成功率 使用 UUID 对象而不是字符串
    from uuid import UUID; model_instance.foreign_key = UUID('550e8400-e29b-41d4-a716-446655440000')

无效尝试

常见但无效的做法:

  1. 忽略验证直接保存 100% 失败

    Django 在保存前会进行字段验证,无法绕过

  2. 将字段类型改为 CharField 60% 失败

    改变模型结构需要迁移,且可能破坏外键关系