55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
from rest_framework import serializers
|
|
|
|
from .models import Standard, UnitType, ImplementRule,EvaluationItem,Evaluations
|
|
|
|
from apps.system.serializers import DictSerializer
|
|
|
|
|
|
class StandardSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Standard
|
|
fields = '__all__'
|
|
|
|
class ImplementRuleSerializer(serializers.ModelSerializer):
|
|
cert_field_ = DictSerializer(source='cert_field', read_only=True)
|
|
class Meta:
|
|
model = ImplementRule
|
|
fields = '__all__'
|
|
|
|
class ImplementRuleListSerializer(serializers.ModelSerializer):
|
|
pv_scope = DictSerializer()
|
|
pv_class = DictSerializer()
|
|
cert_field = DictSerializer()
|
|
ccc_list = DictSerializer(many=True)
|
|
class Meta:
|
|
model = ImplementRule
|
|
fields = ['id', 'code', 'name', 'cert_field', 'pv_scope', 'pv_class', 'create_time', 'ccc_list']
|
|
@staticmethod
|
|
def setup_eager_loading(queryset):
|
|
""" Perform necessary eager loading of data. """
|
|
queryset = queryset.select_related('pv_scope','pv_class', 'cert_field')
|
|
queryset = queryset.prefetch_related('ccc_list',)
|
|
return queryset
|
|
|
|
# def get_cert_field(self, obj):
|
|
# return obj.get_cert_field_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
|
|
class EvaluationItemSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = EvaluationItem
|
|
fields = '__all__'
|
|
class EvaluationsSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Evaluations
|
|
fields = '__all__' |