diff --git a/apps/inm/serializers.py b/apps/inm/serializers.py index 1d80751f..ee119d40 100644 --- a/apps/inm/serializers.py +++ b/apps/inm/serializers.py @@ -30,6 +30,15 @@ class MaterialBatchAListSerializer(CustomModelSerializer): fields = ['material', 'batch', 'rate', 'mb', 'id', 'material_'] +class MaterialBatchAListSerializer2(CustomModelSerializer): + material_name = serializers.StringRelatedField( + source='material', read_only=True) + + class Meta: + model = MIOItemA + fields = ['material', 'batch', 'rate', 'mb', + 'id', 'material_', 'material_name'] + class MaterialBatchSerializer(CustomModelSerializer): warehouse_name = serializers.CharField( source='warehouse.name', read_only=True) @@ -209,15 +218,14 @@ class MIOItemAListSerializer(CustomModelSerializer): class Meta: model = MIOItemA - fields = ['material', 'batch', 'rate', 'mioitem', - 'id', 'material_', 'material_name'] + fields = "__all__" + read_only_fields = EXCLUDE_FIELDS_BASE class MIOItemSerializer(CustomModelSerializer): warehouse_name = serializers.CharField(source='warehouse.name', read_only=True) material_ = MaterialSerializer(source='material', read_only=True) - assemb = MIOItemAListSerializer( - source='a_mioitem', read_only=True, many=True) + assemb = serializers.SerializerMethodField(label="组合件信息") material_name = serializers.StringRelatedField( source='material', read_only=True) inout_date = serializers.DateField(source='mio.inout_date', read_only=True) @@ -235,6 +243,15 @@ class MIOItemSerializer(CustomModelSerializer): ret["price"] = Decimal(ret["count"]) * Decimal(ret["unit_price"]) return ret + def get_assemb(self, obj): + qs = MIOItemA.objects.filter(mioitem=obj) + if qs.exists(): + return MIOItemAListSerializer(qs, many=True).data + elif obj.mb and obj.mb.material.is_assemb: + return MaterialBatchAListSerializer2(MaterialBatchA.objects.filter(mb=obj.mb), many=True).data + return None + + class MioItemDetailSerializer(MIOItemSerializer): mio_ = MIOListSerializer(source='mio', read_only=True)