From 1448927f4e19d0de2330e5d516ec4e2309bb3b01 Mon Sep 17 00:00:00 2001 From: CaptainB Date: Wed, 7 May 2025 10:25:15 +0800 Subject: [PATCH] feat: add ToolFolderFlatSerializer for flat folder serialization in Tool API --- apps/tools/serializers/tool.py | 4 ++-- apps/tools/serializers/tool_folder.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/tools/serializers/tool.py b/apps/tools/serializers/tool.py index 2730a6b6b..e3bcf0bcc 100644 --- a/apps/tools/serializers/tool.py +++ b/apps/tools/serializers/tool.py @@ -18,7 +18,7 @@ from common.result import result from common.utils.tool_code import ToolExecutor from maxkb.const import CONFIG from tools.models import Tool, ToolScope, ToolFolder -from tools.serializers.tool_folder import ToolFolderTreeSerializer +from tools.serializers.tool_folder import ToolFolderFlatSerializer tool_executor = ToolExecutor(CONFIG.get('SANDBOX')) @@ -333,7 +333,7 @@ class ToolTreeSerializer(serializers.Serializer): # 获取当前文件夹下的直接子文件夹 child_folders = ToolFolder.objects.filter(parent=current_folder) - folders_data = ToolFolderTreeSerializer(child_folders, many=True).data + folders_data = ToolFolderFlatSerializer(child_folders, many=True).data # 获取当前文件夹下的工具 tools = QuerySet(Tool).filter(Q(workspace_id=self.data.get('workspace_id')) & diff --git a/apps/tools/serializers/tool_folder.py b/apps/tools/serializers/tool_folder.py index e8dfb6dc5..28a938f17 100644 --- a/apps/tools/serializers/tool_folder.py +++ b/apps/tools/serializers/tool_folder.py @@ -14,3 +14,11 @@ class ToolFolderTreeSerializer(serializers.ModelSerializer): def get_children(self, obj): return ToolFolderTreeSerializer(obj.get_children(), many=True).data + + +class ToolFolderFlatSerializer(serializers.ModelSerializer): + """只序列化当前层的文件夹,不包含子节点""" + + class Meta: + model = ToolFolder + fields = ['id', 'name', 'user_id', 'workspace_id', 'parent_id']