我无法检测到任何模式,某个模型的每 1000 次编辑中可能有 1 次在 m2m 字段上返回 IntegrityError。大多数时候,这个字段甚至没有被修改。保存模型时,我相信 django 总是擦除 m2m 字段,然后重新添加项目,对吗?我看到了 django 调用clear()
,然后add()
是这些项目。
然后我的代码失败了:
IntegrityError:重复的键值违反了唯一约束“app_model_m2m_field_key”详细信息:键(model1_id,model2_id)=(597,1009)已经存在。
好像物品的添加是在物品被清除之前执行的,这很奇怪。我试图重现它,但它非常困难,只是偶尔发生。知道是什么原因造成的吗?也许设置自动提交可以解决这个问题?
提前致谢