72 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
from rest_framework import serializers
 | 
						|
from .models import Company, Consumer, PaySubject, ConsumerPerm, ConsumerRole
 | 
						|
from question.models import Question, Questioncat
 | 
						|
from .permission import get_consumerperm_list
 | 
						|
from rbac.serializers.user_serializer import UserListSerializer
 | 
						|
 | 
						|
 | 
						|
class ConsumerPermSerializer(serializers.ModelSerializer):
 | 
						|
    class Meta:
 | 
						|
        model = ConsumerPerm
 | 
						|
        fields = '__all__'
 | 
						|
 | 
						|
class ConsumerRoleSerializer(serializers.ModelSerializer):
 | 
						|
    class Meta:
 | 
						|
        model = ConsumerRole
 | 
						|
        fields = '__all__'
 | 
						|
 | 
						|
class CompanySerializer(serializers.ModelSerializer):
 | 
						|
    """
 | 
						|
    公司序列化
 | 
						|
    """
 | 
						|
    create_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)
 | 
						|
    update_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)
 | 
						|
    class Meta:
 | 
						|
        model = Company
 | 
						|
        fields = '__all__'
 | 
						|
 | 
						|
 | 
						|
class ConsumerSerializer(serializers.ModelSerializer):
 | 
						|
    """
 | 
						|
    客户序列化
 | 
						|
    """
 | 
						|
    create_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)
 | 
						|
    update_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)
 | 
						|
    company_name = serializers.StringRelatedField(source='company', read_only=True)
 | 
						|
    subjects_name = serializers.StringRelatedField(source='subjects', many=True, read_only=True)
 | 
						|
    workscope_name = serializers.StringRelatedField(source='workscope', read_only=True)
 | 
						|
    role_name = serializers.StringRelatedField(source='role', read_only=True)
 | 
						|
    create_admin_ = UserListSerializer(source='create_admin', read_only=True)
 | 
						|
    class Meta:
 | 
						|
        model = Consumer
 | 
						|
        exclude = ('avatar','collects', 'process')
 | 
						|
    
 | 
						|
    @staticmethod
 | 
						|
    def setup_eager_loading(queryset):
 | 
						|
        """ Perform necessary eager loading of data. """
 | 
						|
        queryset = queryset.select_related('company','workscope', 'role', 'create_admin')
 | 
						|
        queryset = queryset.prefetch_related('subjects',)
 | 
						|
        return queryset
 | 
						|
 | 
						|
class ConsumerDetailSerializer(serializers.ModelSerializer):
 | 
						|
    """
 | 
						|
    客户详情序列化
 | 
						|
    """
 | 
						|
    company_name = serializers.StringRelatedField(source='company', read_only=True)
 | 
						|
    subjects_name = serializers.StringRelatedField(source='subjects', many=True, read_only=True)
 | 
						|
    workscope_name = serializers.StringRelatedField(source='workscope', read_only=True)
 | 
						|
    role_name = serializers.StringRelatedField(source='role', read_only=True)
 | 
						|
    perms = serializers.SerializerMethodField(read_only=True)
 | 
						|
    class Meta:
 | 
						|
        model = Consumer
 | 
						|
        exclude = ('avatar','collects')
 | 
						|
    
 | 
						|
    @staticmethod
 | 
						|
    def setup_eager_loading(queryset):
 | 
						|
        """ Perform necessary eager loading of data. """
 | 
						|
        queryset = queryset.select_related('company','workscope', 'role')
 | 
						|
        queryset = queryset.prefetch_related('subjects',)
 | 
						|
        return queryset
 | 
						|
 | 
						|
    def get_perms(self,obj):
 | 
						|
        return get_consumerperm_list(obj) |