From bcbaba330de417a21d7be886da7446613c4c3875 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Dec 2024 10:16:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20batchst=E5=A2=9E=E5=8A=A0batch=5F=5Fsta?= =?UTF-8?q?rtswith=5F=5Fin=E7=AD=9B=E9=80=89=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/filters.py | 26 +++++++++++++++++++++++--- apps/wpm/views.py | 9 +++------ 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/apps/wpm/filters.py b/apps/wpm/filters.py index fb4d629b..c8f60455 100644 --- a/apps/wpm/filters.py +++ b/apps/wpm/filters.py @@ -1,6 +1,7 @@ from django_filters import rest_framework as filters -from apps.wpm.models import SfLog, StLog, WMaterial, Mlog, Handover, Mgroup, Mlogb, Mtask - +from apps.wpm.models import (SfLog, StLog, WMaterial, Mlog, + Handover, Mgroup, Mlogb, Mtask, BatchSt) +from django.db.models import Q class SfLogFilter(filters.FilterSet): class Meta: @@ -135,4 +136,23 @@ class MlogbFilter(filters.FilterSet): elif value == 'out': return queryset.filter(material_out__isnull=False) return queryset - return queryset.none() \ No newline at end of file + return queryset.none() + + +class BatchStFilter(filters.FilterSet): + batch__startswith__in = filters.CharFilter(method='filter_batch') + + class Meta: + model = BatchSt + fields = { + "batch": ["exact", "contains", "startswith"], + "last_time": ["exact", "gte", "lte"], + "update_time": ["exact", "gte", "lte"] + } + + def filter_batch(self, queryset, name, value): + v_list = value.split(',') + query = Q() + for value in v_list: + query |= Q(batch__startswith=value) + return queryset.filter(query) \ No newline at end of file diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 614bf941..ea3006d6 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -14,7 +14,7 @@ from apps.mtm.models import Material, Process from apps.pm.models import Mtask from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet -from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter +from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter, BatchStFilter from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, AttLog, OtherLog, Fmlog, BatchSt from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogRevertSerializer, MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer, HandoverUpdateSerializer, @@ -523,8 +523,5 @@ class BatchStViewSet(ListModelMixin, CustomGenericViewSet): serializer_class = BatchStSerializer ordering_fields = ["batch", "last_time", "update_time"] ordering = ["batch"] - filterset_fields = { - "batch": ["exact", "contains", "startswith"], - "last_time": ["exact", "gte", "lte"], - "update_time": ["exact", "gte", "lte"] - } + filterset_class = BatchStFilter +