feat: batchst增加batch__startswith__in筛选条件

This commit is contained in:
caoqianming 2024-12-04 10:16:41 +08:00
parent cbaf79084c
commit bcbaba330d
2 changed files with 26 additions and 9 deletions

View File

@ -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:
@ -136,3 +137,22 @@ class MlogbFilter(filters.FilterSet):
return queryset.filter(material_out__isnull=False)
return queryset
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)

View File

@ -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