from apps.mtm.models import Step from rest_framework import serializers from rest_framework.serializers import ModelSerializer from .models import Equipment, ECheckRecord from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSerializer class EquipmentSerializer(ModelSerializer): belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True) keeper_ = UserSimpleSerializer(source='keeper', read_only=True) step_ = serializers.SerializerMethodField() class Meta: model = Equipment fields = '__all__' @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('belong_dept','keeper') return queryset def get_step_(self, obj): return Step.objects.filter(equipments=obj).values('id', 'name', 'number') class EquipmentSimpleSerializer(ModelSerializer): class Meta: model = Equipment fields = ['id', 'number', 'name', 'state'] class EquipmentrecordSerializer(ModelSerializer): equipment_ = EquipmentSerializer(source='equipment', read_only=True) class Meta: model = ECheckRecord fields = '__all__' @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('equipment') return queryset class DaqCreateSerializer(serializers.Serializer): number = serializers.CharField() file = serializers.FileField()