diff --git a/apps/qm/models.py b/apps/qm/models.py index 01673765..d2183baf 100644 --- a/apps/qm/models.py +++ b/apps/qm/models.py @@ -343,6 +343,14 @@ class Ftest(CommonBDModel): FtestWork, verbose_name='关联检验工作', on_delete=models.CASCADE, null=True, blank=True) defect_main = models.ForeignKey(Defect, verbose_name='主要缺陷', on_delete=models.SET_NULL, null=True, blank=True) + @property + def ftestitems(self): + return FtestItem.objects.filter(ftest=self) + + @property + def ftestdefects(self): + return FtestDefect.objects.filter(ftest=self) + @classmethod def init_by_qct(cls, qct, test_user, test_date): ftest = Ftest.objects.create(qct=qct, test_user=test_user, test_date=test_date) diff --git a/apps/qm/serializers.py b/apps/qm/serializers.py index ce55c806..b87911d3 100644 --- a/apps/qm/serializers.py +++ b/apps/qm/serializers.py @@ -347,8 +347,8 @@ class FtestItemProcessSerializer(CustomModelSerializer): class FtestProcessSerializer(CustomModelSerializer): test_user_name = serializers.CharField( source='test_user.name', read_only=True) - ftestitems = FtestItemProcessSerializer(source='items_ftest', many=True) - ftestdefects = FtestDefectSerializer(source='defects_ftest', many=True) + ftestitems = FtestItemProcessSerializer(many=True) + ftestdefects = FtestDefectSerializer(many=True) class Meta: model = Ftest @@ -430,4 +430,8 @@ class FtestProcessSerializer(CustomModelSerializer): instance.defect_main = defect_main instance.is_ok = is_ok instance.save() - return instance \ No newline at end of file + return instance + +class FtestProcessListSerializer(FtestProcessSerializer): + ftestitems = FtestItemProcessSerializer(source='items_ftest', many=True) + ftestdefects = FtestDefectSerializer(source='defects_ftest', many=True) \ No newline at end of file diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 42d3edba..064a60d3 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -21,7 +21,7 @@ from django.utils.timezone import localdate from apps.qm.models import NotOkOption, Qct from apps.wf.serializers import TicketSimpleSerializer from apps.wpmw.models import Wpr -from apps.qm.serializers import FtestProcessSerializer +from apps.qm.serializers import FtestProcessSerializer, FtestProcessListSerializer import logging from apps.qm.models import Defect from apps.utils.snowflake import idWorker @@ -911,6 +911,9 @@ class MlogbwCreateUpdateSerializer(CustomModelSerializer): return mlogbw +class MlogbwListSerializer(MlogbwCreateUpdateSerializer): + ftest = FtestProcessListSerializer(read_only=True) + class MlogbwStartTestSerializer(serializers.Serializer): mlogbw_ids = serializers.ListField(child=serializers.CharField(), label="mlogbwId列表") test_equip = serializers.CharField(label="测试设备", allow_null=True, required=False, allow_blank=True) diff --git a/apps/wpm/views.py b/apps/wpm/views.py index be24dee6..09ab7b41 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -41,6 +41,7 @@ from .serializers import ( FmlogUpdateSerializer, BatchStSerializer, MlogbwCreateUpdateSerializer, + MlogbwListSerializer, HandoverMgroupSerializer, MlogListSerializer, MlogbSerializer, @@ -1074,6 +1075,8 @@ class MlogbwViewSet(CustomModelViewSet): perms_map = {"get": "*", "post": "mlog.update", "put": "mlog.update", "delete": "mlog.update"} queryset = Mlogbw.objects.all() serializer_class = MlogbwCreateUpdateSerializer + list_serializer_class = MlogbwListSerializer + retrieve_serializer_class = MlogbwListSerializer filterset_class = MlogbwFilter select_related_fields = ["ftest", "equip", "wpr", "mlogb"] prefetch_related_fields = [