from rest_framework.serializers import ModelSerializer, ValidationError from apps.mtm.serializers import MaterialSimpleSerializer from .models import PuOrder, PuOrderItem, Vendor class VendorSerializer(ModelSerializer): class Meta: model = Vendor fields = '__all__' class VendorSimpleSerializer(ModelSerializer): class Meta: model = Vendor fields = ['id', 'name'] class PuOrderItemSerializer(ModelSerializer): material_ = MaterialSimpleSerializer(source='material', read_only=True) class Meta: model = PuOrderItem fields = '__all__' class PuOrderItemCreateSerializer(ModelSerializer): class Meta: model = PuOrderItem fields = ['count', 'delivery_date', 'pu_order', 'material'] def validate(self, attrs): pu_order = attrs['pu_order'] if pu_order.is_audited: raise ValidationError('采购订单已审核') return super().validate(attrs) class PuOrderItemUpdateSerializer(ModelSerializer): class Meta: model = PuOrderItem fields = ['count', 'delivery_date'] class PuOrderSerializer(ModelSerializer): vendor_ = VendorSimpleSerializer(source='vendor', read_only=True) items = PuOrderItemSerializer(source='item_pu_order', many=True, read_only=True) class Meta: model = PuOrder fields = '__all__' class PuOrderCreateUpdateSerializer(ModelSerializer): class Meta: model = PuOrder fields = ['number', 'vendor']