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 +