diff --git a/apps/mtm/serializers.py b/apps/mtm/serializers.py index 99beed56..5af9de02 100644 --- a/apps/mtm/serializers.py +++ b/apps/mtm/serializers.py @@ -177,6 +177,8 @@ class RouteSerializer(CustomModelSerializer): process_cate = serializers.CharField(source='process.cate', read_only=True) material_in_name = serializers.StringRelatedField( source='material_in', read_only=True) + material_in_type = serializers.CharField( + source='material_in.type', read_only=True) material_out_name = serializers.StringRelatedField( source='material_out', read_only=True) material_out_type = serializers.CharField( @@ -268,6 +270,8 @@ class RouteSerializer(CustomModelSerializer): # if material and process and Route.objects.filter(material=material, process=process).exists(): # raise ValidationError('已选择该工序!!') + if not validated_data.get('material_out') and not validated_data.get('material'): + raise ParseError('未指定输出物料,且工艺包未设置产品无法自动生成;请指定输出物料,或先在工艺包基本信息中选择产品') instance:Route = super().create(validated_data) material_out = instance.material_out if material_out: @@ -303,6 +307,8 @@ class RouteSerializer(CustomModelSerializer): if material_out_tracking is None: material_out_tracking = Material.MA_TRACKING_BATCH + if not validated_data.get('material_out', instance.material_out) and not instance.material: + raise ParseError('未指定输出物料,且工艺包未设置产品无法自动生成;请指定输出物料,或先在工艺包基本信息中选择产品') instance = super().update(instance, validated_data) material_out = instance.material_out if material_out: