From 2adfbeaeb76de3d6d30fbe31f6fd8ed1c16d6544 Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 20 Feb 2023 18:41:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BB=88=E7=AB=AF?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=90=9C=E7=B4=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/api/component/terminal.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/terminal/api/component/terminal.py b/apps/terminal/api/component/terminal.py index d877be1df..6d4c141d1 100644 --- a/apps/terminal/api/component/terminal.py +++ b/apps/terminal/api/component/terminal.py @@ -1,13 +1,15 @@ # -*- coding: utf-8 -*- # import logging - +from django.db.models import Q from django.conf import settings from django.utils.translation import gettext_lazy as _ from rest_framework import generics from rest_framework import status from rest_framework.views import APIView, Response +from django_filters import rest_framework as filters +from common.drf.filters import BaseFilterSet from common.api import JMSBulkModelViewSet from common.exceptions import JMSException from common.permissions import WithBootstrapToken @@ -21,10 +23,28 @@ __all__ = [ logger = logging.getLogger(__file__) +class TerminalFilterSet(BaseFilterSet): + name = filters.CharFilter(field_name='name', lookup_expr='icontains') + remote_addr = filters.CharFilter(field_name='remote_addr', lookup_expr='icontains') + + class Meta: + model = Terminal + fields = ['name', 'remote_addr', 'type'] + + def filter_queryset(self, queryset): + queryset = super().filter_queryset(queryset) + search = self.request.query_params.get('search') + if not search: + return queryset + q = Q(name__icontains=search) | Q(remote_addr__icontains=search) + queryset = queryset.filter(q) + return queryset + + class TerminalViewSet(JMSBulkModelViewSet): queryset = Terminal.objects.filter(is_deleted=False) serializer_class = serializers.TerminalSerializer - filterset_fields = ['name', 'remote_addr', 'type'] + filterset_class = TerminalFilterSet custom_filter_fields = ['load'] def destroy(self, request, *args, **kwargs):