From f0c200a15f081ac2c0df182545cf2b67635e8446 Mon Sep 17 00:00:00 2001 From: DXC Date: Fri, 24 Apr 2026 11:42:42 +0800 Subject: [PATCH] fix: delete_bom use .all() instead of .first() to delete all child records --- inventory-backend/app/api/v1/bom.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/inventory-backend/app/api/v1/bom.py b/inventory-backend/app/api/v1/bom.py index cb3e9ea..643381c 100644 --- a/inventory-backend/app/api/v1/bom.py +++ b/inventory-backend/app/api/v1/bom.py @@ -214,12 +214,16 @@ def delete_bom(bom_no): if version: query = query.filter_by(version=version) - exist = query.first() - if not exist: + # 【核心修复】:使用 .all() 查出该 BOM 版本下的所有子件记录 + records = query.all() + + if not records: return jsonify({'code': 404, 'msg': 'BOM 不存在'}), 404 - # 删除(改为对象级删除以触发审计事件) - db.session.delete(exist) + # 循环删除所有关联记录(逐个 delete 可触发 SQLAlchemy 监听器记录审计日志) + for rec in records: + db.session.delete(rec) + db.session.commit() return jsonify({ 'code': 200,