diff --git a/apps/tools/serializers/tool.py b/apps/tools/serializers/tool.py index ef60e43cb69..0915c6e9f3f 100644 --- a/apps/tools/serializers/tool.py +++ b/apps/tools/serializers/tool.py @@ -1470,6 +1470,7 @@ class ToolRecord(serializers.Serializer): source_name = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("source name")) source_type = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("source type")) state = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("state")) + order = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("Order field")) class Operate(serializers.Serializer): id = serializers.UUIDField(required=False, allow_null=True, label=_("record id")) @@ -1557,7 +1558,12 @@ def get_tool_records(self, current_page: int, page_size: int): query_set = query_set.filter(Q(id=self.data.get("record_id"))) if self.data.get("workspace_id"): query_set = query_set.filter(Q(workspace_id=self.data.get("workspace_id"))) - query_set = query_set.order_by("-create_time") + order = str(self.data.get("order") or "").strip() + # 前端执行时间排序沿用触发器记录的 ett 别名协议,工具记录表无别名,需去掉前缀。 + if order in ("ett.create_time", "-ett.create_time"): + query_set = query_set.order_by(order.replace("ett.", "")) + else: + query_set = query_set.order_by("-create_time") return page_search( current_page, diff --git a/apps/tools/views/tool.py b/apps/tools/views/tool.py index 3417c94335e..cbd4c2eb765 100644 --- a/apps/tools/views/tool.py +++ b/apps/tools/views/tool.py @@ -719,6 +719,7 @@ def get(self, request: Request, tool_id: str, workspace_id: str, current_page: i "source_name": request.query_params.get("source_name"), "source_type": request.query_params.get("source_type"), "state": request.query_params.get("state"), + "order": request.query_params.get("order"), } ).get_tool_records(current_page, page_size) )