diff --git a/apps/qm/filters.py b/apps/qm/filters.py index a47acdbe..198f5528 100644 --- a/apps/qm/filters.py +++ b/apps/qm/filters.py @@ -1,6 +1,7 @@ from django_filters import rest_framework as filters -from apps.qm.models import QuaStat, TestItem, FtestWork, Qct +from apps.qm.models import QuaStat, TestItem, FtestWork, Qct, Ftest from apps.utils.filters import MyJsonListFilter +from django.db.models import Q class QuaStatFilter(filters.FilterSet): @@ -48,4 +49,18 @@ class FtestWorkFilter(filters.FilterSet): "type": ["exact"], "type2": ["exact"], "shift": ["exact"] - } \ No newline at end of file + } + +class FtestFilter(filters.FilterSet): + wpr = filters.CharFilter(label="wprId", method="filter_wpr") + class Meta: + model = Ftest + fields = { + "type": ["exact"], + "ftest_work": ["exact"], + "mlogbw_ftest__wpr": ["exact"], + "mioitemw_ftest__wpr": ["exact"], + } + + def filter_wpr(self, queryset, name, value): + return queryset.filter(Q(mlogbw_ftest__wpr=value) | Q(mioitemw_ftest__wpr=value)) \ No newline at end of file diff --git a/apps/qm/views.py b/apps/qm/views.py index 2d05a346..5763fa49 100644 --- a/apps/qm/views.py +++ b/apps/qm/views.py @@ -15,7 +15,7 @@ import datetime from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.wpm.models import SfLog -from apps.qm.filters import QuaStatFilter, TestItemFilter, FtestWorkFilter, QctFilter +from apps.qm.filters import QuaStatFilter, TestItemFilter, FtestWorkFilter, QctFilter, FtestFilter from django.db import transaction from apps.qm.services import ftestwork_submit from apps.utils.thread import MyThread @@ -153,7 +153,7 @@ class FtestViewSet(CustomModelViewSet): queryset = Ftest.objects.all() serializer_class = FtestSerializer select_related_fields = ['test_user', 'check_user', 'ftest_work'] - filterset_fields = ['type', 'ftest_work', "mlogbw_ftest__wpr"] + filterset_class = FtestFilter def count_sampling(self, ftest_work:FtestWork): qs = Ftest.objects.filter(ftest_work=ftest_work)