python data_error ai_generated true

多对象返回错误:get() 返回了多个 MyModel 实例

django.core.exceptions.MultipleObjectsReturned: get() returned more than one MyModel -- it returned 2!

ID: python/django-multiple-objects-returned

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

版本兼容性

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

根因分析

get() 方法期望唯一结果,但查询条件返回了多条记录

English

使用 get() 查询时,条件匹配了多个记录

generic

解决方案

  1. 95% 成功率 使用 filter() 并获取第一个对象
    obj = MyModel.objects.filter(condition).first()
  2. 90% 成功率 添加唯一约束
    在模型字段中添加 unique=True 或使用 unique_together

无效尝试

常见但无效的做法:

  1. 忽略错误继续执行 100% 失败

    异常会导致程序中断,无法忽略

  2. 使用 filter() 代替 get() 50% 失败

    filter() 返回 QuerySet,后续代码可能期望单个对象