from rest_framework import serializers from .models import Standard, UnitType, ImplementRule from apps.system.serializers import DictSerializer class StandardSerializer(serializers.ModelSerializer): class Meta: model = Standard fields = '__all__' class ImplementRuleSerializer(serializers.ModelSerializer): class Meta: model = ImplementRule fields = '__all__' class ImplementRuleListSerializer(serializers.ModelSerializer): pv_scope = DictSerializer() pv_class = DictSerializer() cert_type = serializers.SerializerMethodField() class Meta: model = ImplementRule fields = ['id', 'code', 'name', 'cert_type', 'pv_scope', 'pv_class', 'create_time'] @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('pv_scope','pv_class') return queryset def get_cert_type(self, obj): return obj.get_cert_type_display() class UnitTypeSerializer(serializers.ModelSerializer): standard_ = StandardSerializer(source='standard', read_only=True) class Meta: model = UnitType fields = '__all__' @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('standard','implementrule') return queryset