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

django-import-export更新已有模型对象时是否会删除旧实例?

django-import-export 已存在对象更新逻辑说明

默认待更新状态的对象走的是第二种执行逻辑:直接修改原有实例的字段值后保存,不会先删除旧实例再新建。
具体执行流程如下:

  • 系统逐行解析导入文件数据时,会先识别每行携带的pk值,到数据库中查询是否存在对应主键的模型实例。
  • 匹配到已存在的实例后,不会调用实例的delete()方法删除旧数据,而是将导入文件中解析出的字段值,逐一赋值到该现有实例的对应属性上。
  • 所有字段赋值完成后,框架会调用该实例的save()方法完成数据落库,整个过程不会生成新的主键值,也不会触发实例删除相关的信号。

补充说明:框架默认不会直接调用QuerySet级别的update()方法完成更新,因为导入流程需要触发模型层save()相关的内置逻辑、以及django-import-export自身提供的导入前后钩子函数,保证自定义字段清洗、关联数据处理、信号监听等逻辑可以正常执行。
只有当你手动在导入资源类中配置了delete_before_import=True参数时,才会在导入前先清空对应表的旧数据再批量新建,这个场景不属于默认的单条待更新状态的执行逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:39:09