diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 71be5ffb..74664ef1 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -18,7 +18,7 @@ from django.db import transaction from django.utils import timezone from django.core.cache import cache from django.utils.timezone import localdate -from apps.qm.models import NotOkOption +from apps.qm.models import NotOkOption, Ftest from apps.wf.serializers import TicketSimpleSerializer from apps.wpmw.models import Wpr from apps.qm.serializers import FtestProcessSerializer @@ -588,9 +588,26 @@ class MlogbwCreateUpdateSerializer(CustomModelSerializer): raise ValidationError('请选择相应产品') return attrs + def save_ftest(self, mlogbw, ftest_data): + if "id" not in ftest_data: + ftest = FtestProcessSerializer(data=ftest_data).save() + mlogbw.ftest = ftest + mlogbw.save() + else: + FtestProcessSerializer(instance=Ftest.objects.get(id=ftest_data["id"]), data=ftest_data).save() + return mlogbw + + @transaction.atomic + def create(self, validated_data): + ftest_data = validated_data.pop("ftest", None) + mlogbw = super().create(validated_data) + return self.save_ftest(mlogbw, ftest_data) + def update(self, instance, validated_data): validated_data.pop("mlogb") - super().update(instance, validated_data) + ftest_data = validated_data.pop("ftest", None) + mlogbw = super().update(instance, validated_data) + return self.save_ftest(mlogbw, ftest_data) class MlogbOutUpdateSerializer(CustomModelSerializer): class Meta: