fix: 增加materials__type__in筛选
This commit is contained in:
parent
4a0f73c783
commit
6cb22744c2
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue