from rest_framework import serializers from .models import Material, Process, ProductProcess, Step from apps.system.serializers import FileSimpleSerializer class MaterialSerializer(serializers.ModelSerializer): processes = serializers.ListField(child=serializers.IntegerField(min_value=1)) class Meta: model = Material fields = '__all__' class MaterialDetailSerializer(serializers.ModelSerializer): processes_ = serializers.SerializerMethodField() class Meta: model = Material fields = '__all__' def get_processes_(self, obj): objs = Process.objects.filter(id__in=obj.processes) return ProcessSimpleSerializer(instance=objs, many=True).data class MaterialSimpleSerializer(serializers.ModelSerializer): class Meta: model = Material fields = ['id', 'name', 'number'] class ProcessSerializer(serializers.ModelSerializer): instruction_ = FileSimpleSerializer(source='instruction', read_only=True) class Meta: model = Process fields = '__all__' class ProcessSimpleSerializer(serializers.ModelSerializer): class Meta: model = Process fields = ['id', 'name', 'number'] class StepSerializer(serializers.ModelSerializer): class Meta: model = Step fields = '__all__' class ProductProcessListSerializer(serializers.ModelSerializer): process_ = ProcessSimpleSerializer(source='process', read_only=True) product_ = MaterialSimpleSerializer(source='product', read_only=True) class Meta: model = ProductProcess fields = '__all__' class ProductProcessUpdateSerializer(serializers.ModelSerializer): class Meta: model = ProductProcess fields = ['sort']