consumer serilizer

This commit is contained in:
caoqianming 2020-06-28 15:38:57 +08:00
parent 49948f0a4b
commit 3db94498d6
2 changed files with 22 additions and 3 deletions

View File

@ -35,6 +35,25 @@ class ConsumerSerializer(serializers.ModelSerializer):
subjects_name = serializers.StringRelatedField(source='subjects', many=True, read_only=True) subjects_name = serializers.StringRelatedField(source='subjects', many=True, read_only=True)
workscope_name = serializers.StringRelatedField(source='workscope', read_only=True) workscope_name = serializers.StringRelatedField(source='workscope', read_only=True)
role_name = serializers.StringRelatedField(source='role', 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) perms = serializers.SerializerMethodField(read_only=True)
class Meta: class Meta:
model = Consumer model = Consumer
@ -43,7 +62,7 @@ class ConsumerSerializer(serializers.ModelSerializer):
@staticmethod @staticmethod
def setup_eager_loading(queryset): def setup_eager_loading(queryset):
""" Perform necessary eager loading of data. """ """ Perform necessary eager loading of data. """
queryset = queryset.select_related('company','workscope') queryset = queryset.select_related('company','workscope', 'role')
queryset = queryset.prefetch_related('subjects',) queryset = queryset.prefetch_related('subjects',)
return queryset return queryset

View File

@ -29,7 +29,7 @@ from utils.custom import CommonPagination
from .exports import export_consumer from .exports import export_consumer
from .models import Company, Consumer, PaySubject, SendCode, ConsumerPerm, ConsumerRole 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' appid = 'wxf1e9471c93f05ad6'
secret = '4bf7f9bd6c52634586bbe792a1f0a834' secret = '4bf7f9bd6c52634586bbe792a1f0a834'
@ -320,7 +320,7 @@ class ConsumerMPLoginView(APIView):
openid = info['openid'] openid = info['openid']
session_key = info['session_key'] session_key = info['session_key']
consumer = Consumer.objects.get_or_create(openid = openid)[0] consumer = Consumer.objects.get_or_create(openid = openid)[0]
serializer = ConsumerSerializer(instance=consumer) serializer = ConsumerDetailSerializer(instance=consumer)
payload = jwt_payload_handler(consumer) payload = jwt_payload_handler(consumer)
token = jwt_encode_handler(payload) token = jwt_encode_handler(payload)
return Response({"token":token,"session_key":session_key, "openid":openid, "userinfo":serializer.data}) return Response({"token":token,"session_key":session_key, "openid":openid, "userinfo":serializer.data})