44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
| 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 |