You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django创建Image_model后RoomChatMessage对象重复生成两次问题排查

Django重复生成RoomChatMessage对象问题排查

核心可复现原因按优先级排列:

  • 变量拼写错误触发重试机制
    你提供的代码存在明显的变量名拼写不一致问题:实例化Image_model时定义的变量名为 image_model,但在RoomChatMessage.objects.create方法中给image字段传参时误用为image_modal(多了字母a)。
    若你的服务端配置了未捕获异常自动重试、或者前端遇到接口报错会自动重发请求,就会出现如下流程:
    1. 第一次请求成功创建并保存Image_model对象,执行到消息创建步骤时因变量未定义抛出异常
    2. 自动触发的第二次请求进入逻辑后,若你对图片上传做了幂等校验,不会重复创建Image_model对象,但会正常执行消息创建逻辑;同时如果第一次请求的异常捕获规则是跳过报错继续执行后续逻辑,就会生成两条重复的消息。
  • 模型信号/重写save方法的附加逻辑
    若你确认拼写无问题,检查是否对Image_model做了如下配置:
    1. 重写了Image_model的save()方法,方法内部包含创建RoomChatMessage的逻辑
    2. 为Image_model绑定了post_save信号,信号接收器中会自动创建关联的聊天消息
      这种情况下,你代码中显式调用RoomChatMessage.objects.create会生成第一条消息,信号/重写save方法中的隐式调用会生成第二条,完全符合你提到的「注释图片逻辑后无重复」的现象。
  • 请求重复提交未做幂等校验
    若前两个问题都不存在,排查前端逻辑是否在上传图片后重复触发了消息提交的接口,且接口未加入幂等校验(比如通过唯一请求ID判断是否已经处理过该请求),也会出现该异常。

内容的提问来源于stack exchange,提问作者Henrik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:27:03