diff --git a/apps/mtm/serializers.py b/apps/mtm/serializers.py index 5745cd10..8827eabb 100644 --- a/apps/mtm/serializers.py +++ b/apps/mtm/serializers.py @@ -227,6 +227,7 @@ class RouteSerializer(CustomModelSerializer): process = validated_data['process'] routepack = validated_data.get('routepack', None) material_out_tracking = validated_data.pop("material_out_tracking", Material.MA_TRACKING_BATCH) + need_save = False if routepack: pass # if Route.objects.filter(routepack=routepack, process=process).exists(): @@ -252,13 +253,15 @@ class RouteSerializer(CustomModelSerializer): else: if instance.material: instance.material_out = self.gen_material_out(instance, material_out_tracking) + need_save = True rx = Route.objects.filter(material_in=instance.material_in, material_out=instance.material_out, process=process).first() if rx: msg = "" if rx.routepack: msg = rx.routepack.name raise ParseError(f"该工艺步骤已存在-{msg}") - instance.save() + if need_save: + instance.save() return instance def update(self, instance, validated_data): @@ -268,6 +271,7 @@ class RouteSerializer(CustomModelSerializer): with transaction.atomic(): instance = super().update(instance, validated_data) material_out = instance.material_out + need_save = False if material_out: if material_out.process is None: material_out.process = process @@ -281,13 +285,15 @@ class RouteSerializer(CustomModelSerializer): else: if instance.material: instance.material_out = self.gen_material_out(instance, material_out_tracking) + need_save = True rx = Route.objects.filter(material_in=instance.material_in, material_out=instance.material_out, process=process).exclude(id=instance.id).first() if rx: msg = "" if rx.routepack: msg = rx.routepack.name raise ParseError(f"该工艺步骤已存在-{msg}") - instance.save() + if need_save: + instance.save() return instance def to_representation(self, instance):