From 3db94498d6a23473895c83f06f0c42ea221ea749 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 28 Jun 2020 15:38:57 +0800 Subject: [PATCH] consumer serilizer --- test_server/crm/serializers.py | 21 ++++++++++++++++++++- test_server/crm/views.py | 4 ++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/test_server/crm/serializers.py b/test_server/crm/serializers.py index 4021c0c..9f916c9 100644 --- a/test_server/crm/serializers.py +++ b/test_server/crm/serializers.py @@ -35,6 +35,25 @@ class ConsumerSerializer(serializers.ModelSerializer): 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) + 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 + +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 @@ -43,7 +62,7 @@ class ConsumerSerializer(serializers.ModelSerializer): @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ - queryset = queryset.select_related('company','workscope') + queryset = queryset.select_related('company','workscope', 'role') queryset = queryset.prefetch_related('subjects',) return queryset diff --git a/test_server/crm/views.py b/test_server/crm/views.py index b03516e..7da90d3 100644 --- a/test_server/crm/views.py +++ b/test_server/crm/views.py @@ -29,7 +29,7 @@ from utils.custom import CommonPagination from .exports import export_consumer from .models import Company, Consumer, PaySubject, SendCode, ConsumerPerm, ConsumerRole -from .serializers import CompanySerializer, ConsumerSerializer, ConsumerPermSerializer, ConsumerRoleSerializer +from .serializers import CompanySerializer, ConsumerSerializer, ConsumerPermSerializer, ConsumerRoleSerializer, ConsumerDetailSerializer appid = 'wxf1e9471c93f05ad6' secret = '4bf7f9bd6c52634586bbe792a1f0a834' @@ -320,7 +320,7 @@ class ConsumerMPLoginView(APIView): openid = info['openid'] session_key = info['session_key'] consumer = Consumer.objects.get_or_create(openid = openid)[0] - serializer = ConsumerSerializer(instance=consumer) + serializer = ConsumerDetailSerializer(instance=consumer) payload = jwt_payload_handler(consumer) token = jwt_encode_handler(payload) return Response({"token":token,"session_key":session_key, "openid":openid, "userinfo":serializer.data})