From 006bbb1fc81e718347a7bc9b6affe4bcd937e0d6 Mon Sep 17 00:00:00 2001 From: wanjia Date: Tue, 3 Jun 2025 10:35:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E6=9D=BFquery=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=A8=A1=E7=B3=8A=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/template/views.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/apps/template/views.py b/apps/template/views.py index 2663fa6..8fa882b 100644 --- a/apps/template/views.py +++ b/apps/template/views.py @@ -14,6 +14,7 @@ from .utils import ApiResponse from .pagination import StandardResultsSetPagination from rest_framework.permissions import IsAuthenticated from apps.user.authentication import CustomTokenAuthentication +from django.db.models import Q # Create your views here. class TemplateViewSet(viewsets.ModelViewSet): @@ -255,11 +256,13 @@ class TemplateViewSet(viewsets.ModelViewSet): 请求体参数: - mission: 任务类型 + - query: 搜索关键词(可选,用于模糊查询标题和内容) - page: 页码(可选,默认1) - page_size: 每页数量(可选,默认10) """ # 获取查询参数 mission = request.data.get('mission', None) + query = request.data.get('query', None) page = request.data.get('page', 1) page_size = request.data.get('page_size', 10) @@ -273,10 +276,21 @@ class TemplateViewSet(viewsets.ModelViewSet): ) # 构建查询集 + queryset = self.get_queryset() + + # 按任务类型筛选 if mission and mission != 'all': - queryset = self.filter_queryset(self.get_queryset().filter(mission=mission)) - else: - queryset = self.filter_queryset(self.get_queryset()) + queryset = queryset.filter(mission=mission) + + # 按关键词模糊查询 + if query: + queryset = queryset.filter( + Q(title__icontains=query) | + Q(content__icontains=query) + ) + + # 应用其他过滤器 + queryset = self.filter_queryset(queryset) # 设置分页 paginator = self.pagination_class()