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

Django+PostgreSQL中Block模型编辑保存触发唯一键冲突错误求助

解决方案

核心问题:save方法调用错误

你的Block模型的save方法中,调用父类save时错误传递了self参数,导致Django将更新操作误判为创建新对象,触发主键重复错误。

修复代码

修改Block模型的save方法:

def save(self, *args, **kwargs):
    self.name = self.name.capitalize()
    # 移除super().save中的self参数
    return super().save(*args, **kwargs)

原因解释

Django模型的save是实例方法,调用父类的save时,Python会自动将当前实例绑定到方法上,不需要手动传递self。错误传递self后,super().save会把self当作第一个位置参数(对应force_insert参数),导致Django强制执行插入操作而非更新,从而触发主键重复的完整性错误。

额外验证

修复后,编辑保存Block实例时,Django会正确执行更新操作,不会再尝试插入已存在主键的记录。

内容的提问来源于stack exchange,提问作者Andras Vincze-Nagy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:17:18