From 095190a7856c893dd364538590b3604a5d21000c Mon Sep 17 00:00:00 2001 From: pycook Date: Thu, 2 May 2024 21:22:40 +0800 Subject: [PATCH] fix(api): unique constraint (#505) --- cmdb-api/api/lib/cmdb/ci.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cmdb-api/api/lib/cmdb/ci.py b/cmdb-api/api/lib/cmdb/ci.py index 7c2da6c..c1b56f0 100644 --- a/cmdb-api/api/lib/cmdb/ci.py +++ b/cmdb-api/api/lib/cmdb/ci.py @@ -263,10 +263,11 @@ class CIManager(object): ci_ids = None for attr_id in constraint.attr_ids: value_table = TableMap(attr_name=id2name[attr_id]).table - - _ci_ids = set([i.ci_id for i in value_table.get_by(attr_id=attr_id, - to_dict=False, - value=ci_dict.get(id2name[attr_id]) or None)]) + values = value_table.get_by(attr_id=attr_id, + value=ci_dict.get(id2name[attr_id]) or None, + only_query=True).join( + CI, CI.id == value_table.ci_id).filter(CI.type_id == type_id) + _ci_ids = set([i.ci_id for i in values]) if ci_ids is None: ci_ids = _ci_ids else: