hberp/hb_server/apps/mtm/serializers.py

55 lines
1.7 KiB
Python

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']