From c96c4ffd5454d11043e43f9929091bbab9a5c25d Mon Sep 17 00:00:00 2001
From: pycook <pycook@126.com>
Date: Thu, 2 May 2024 21:22:11 +0800
Subject: [PATCH] fix(api): unique constraint

---
 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: