From 9a811c4fcbc412538127d3a9c52fbf44479fb368 Mon Sep 17 00:00:00 2001 From: Angelo Date: Sat, 30 Sep 2023 02:15:59 +0800 Subject: [PATCH] =?UTF-8?q?refactor(import):=20=E6=89=B9=E9=87=8F=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=A8=A1=E6=9D=BF=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/utils/filters.py | 4 ++-- backend/dvadmin/utils/import_export_mixin.py | 22 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/backend/dvadmin/utils/filters.py b/backend/dvadmin/utils/filters.py index 8f00ba7..54a2eff 100644 --- a/backend/dvadmin/utils/filters.py +++ b/backend/dvadmin/utils/filters.py @@ -425,9 +425,9 @@ def next_layer_data(qs_filter, qs_node): parent_ids.add(node.parent.id) break node = node.parent - # print(f"过滤查询集 ==> {qs_filter}", flush=True) + # print(f"过滤查询集 ==> {qs_filter}", flush=True) # print(f"待渲染节点的id ==> {parent_nodes=}", flush=True) - # print(f"过滤查询集的父节点id ==> {parent_ids=}", flush=True) + # print(f"过滤查询集的父节点id ==> {parent_ids=}", flush=True) return parent_ids diff --git a/backend/dvadmin/utils/import_export_mixin.py b/backend/dvadmin/utils/import_export_mixin.py index 1836f3b..60cfc0c 100644 --- a/backend/dvadmin/utils/import_export_mixin.py +++ b/backend/dvadmin/utils/import_export_mixin.py @@ -184,7 +184,7 @@ class ImportSerializerMixin: value = items[1] if isinstance(value, dict): header_data.append(value.get("title")) - hidden_header.append(value.get('display')) + hidden_header.append(value.get('display') or key) choices = value.get("choices", {}) if choices.get("data"): data_list = [] @@ -213,7 +213,7 @@ class ImportSerializerMixin: ws1[f"{get_column_letter(index + 1)}{inx + 2}"] = ele #-------- df_len_max = [self.get_string_len(ele) for ele in header_data] - row = get_column_letter(len(hidden_header) + 1) + row = get_column_letter(len(hidden_header)) column = 1 ws.append(header_data) for index, results in enumerate(data): @@ -221,6 +221,24 @@ class ImportSerializerMixin: for h_index, h_item in enumerate(hidden_header): for key, val in results.items(): if key == h_item: + + select_field = self.import_field_dict.get(key) if key in self.import_field_dict.keys() else None + + choices = ( + select_field.get("choices", {}) if select_field and isinstance(select_field, dict) else {} + ) + if choices.get("data"): + for k, v in choices.get("data").items(): + if v == val: + val = k + elif choices.get("queryset") and choices.get("values_name"): + data_list = choices.get("queryset").values(choices.get("values_name"), "id") + join_vals = [] + for ele in data_list: + if ele.get("id") == val or (isinstance(val, list) and ele.get("id") in val): + join_vals.append(ele.get(choices.get("values_name"))) + val = ",".join(join_vals) + if val is None or val == "": results_list.append("") elif isinstance(val,list):