fix: 增加materials__type__in筛选

This commit is contained in:
caoqianming 2024-01-24 12:31:36 +08:00
parent 4a0f73c783
commit 6cb22744c2
2 changed files with 29 additions and 10 deletions

View File

@ -1,5 +1,5 @@
from django_filters import rest_framework as filters
from apps.inm.models import MaterialBatch
from apps.inm.models import MaterialBatch, MIO
class MaterialBatchFilter(filters.FilterSet):
@ -13,3 +13,29 @@ class MaterialBatchFilter(filters.FilterSet):
"material__process": ["exact", "in"],
"count": ["exact", "gte", "lte"]
}
class MioFilter(filters.FilterSet):
materials__type = filters.CharFilter(
method='filter_materials__type', label='物料类型')
materials__type__in = filters.CharFilter(
method='filter_materials__type__in', label="物料类型多选,")
class Meta:
model = MIO
fields = {
'state': ["exact", "in"],
"type": ["exact", "in"],
"pu_order": ["exact"],
"order": ["exact"]
}
def filter_materials__type(self, queryset, name, value):
if value:
return queryset.filter(materials__type=value).distinct()
return queryset
def filter_materials__type__in(self, queryset, name, value):
if value:
return queryset.filter(materials__type__in=value.split(',')).distinct()
return queryset

View File

@ -16,7 +16,7 @@ from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from apps.inm.services import InmService
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, BulkUpdateModelMixin
from apps.utils.permission import has_perm
from .filters import MaterialBatchFilter
from .filters import MaterialBatchFilter, MioFilter
# Create your views here.
@ -124,14 +124,7 @@ class MIOViewSet(CustomModelViewSet):
'submit_user', 'supplier', 'order', 'customer', 'pu_order']
serializer_class = MIOListSerializer
retrieve_serializer_class = MIODetailSerializer
filterset_fields = {
'state': ["exact", "in"],
"type": ["exact", "in"],
"pu_order": ["exact"],
"order": ["exact"],
"materials": ["exact"],
"materials__type": ["exact", "in"]
}
filterset_class = MioFilter
search_fields = ['number']
data_filter = True