From b0cf23834ab0625d5a5f4dc53405fb98ea1594eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Fri, 4 Nov 2022 06:57:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=A4=84=E7=90=86=E4=BA=BAbu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wf/serializers.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/wf/serializers.py b/apps/wf/serializers.py index 238680de..12f408a3 100755 --- a/apps/wf/serializers.py +++ b/apps/wf/serializers.py @@ -118,12 +118,10 @@ class TicketListSerializer(CustomModelSerializer): model = Ticket fields = ['id', 'title', 'sn', 'workflow', 'workflow_', 'state', 'state_', 'act_state', 'create_time', 'update_time', 'participant_type', 'create_by', 'ticket_data', - 'participant_', 'script_run_last_result'] + 'participant_', 'script_run_last_result', 'participant'] def get_participant_(self, obj): - if obj.participant_type == 1: - return UserSimpleSerializer(instance=User.objects.get(id=obj.participant)).data - elif obj.participant_type == 2: + if obj.participant_type in [1, 2]: return UserSimpleSerializer(instance=User.objects.filter(id__in=obj.participant), many=True).data return None @@ -137,11 +135,17 @@ class TicketDetailSerializer(CustomModelSerializer): workflow_ = WorkflowSimpleSerializer(source='workflow', read_only=True) state_ = StateSimpleSerializer(source='state', read_only=True) ticket_data_ = serializers.SerializerMethodField() + participant_ = serializers.SerializerMethodField() class Meta: model = Ticket fields = '__all__' + def get_participant_(self, obj): + if obj.participant_type in [1, 2]: + return UserSimpleSerializer(instance=User.objects.filter(id__in=obj.participant), many=True).data + return None + @staticmethod def setup_eager_loading(queryset): queryset = queryset.select_related('workflow', 'state') @@ -163,13 +167,17 @@ class TicketDetailSerializer(CustomModelSerializer): i['field_display'] = ','.join(list(User.objects.filter( id__in=i['field_value']).values_list('name', flat=True))) else: - i['field_display'] = User.objects.get(id=i['field_value']).name + f_obj = User.objects.filter(id=i['field_value']).first() + if f_obj: + i['field_display'] = f_obj.name elif 'deptSelect' in i['label']: if isinstance(i['field_value'], list): i['field_display'] = ','.join(list(Dept.objects.filter( id__in=i['field_value']).values_list('name', flat=True))) else: - i['field_display'] = Dept.objects.get(id=i['field_value']).name + f_obj = Dept.objects.filter(id=i['field_value']).first() + if f_obj: + i['field_display'] = f_obj.name elif i['field_type'] in ['radio', 'select']: for m in i['field_choice']: if m['id'] == i['field_value']: