Skip to content

Commit aa7cf07

Browse files
Optimized query number for eap list
1 parent e156db6 commit aa7cf07

File tree

2 files changed

+38
-16
lines changed

2 files changed

+38
-16
lines changed

eap/serializers.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class Meta:
6060
read_only_fields = ('early_action',)
6161

6262

63-
class PrioritizedRiskSerializer(serializers.ModelSerializer):
63+
class PrioritizedRiskSerializer(serializers.ModelSerializer):
6464
class Meta:
6565
model = PrioritizedRisk
6666
fields = ('__all__')
@@ -90,13 +90,10 @@ class Meta:
9090

9191

9292
class EAPDocumentSerializer(serializers.ModelSerializer):
93-
created_by_details = UserNameSerializer(source='created_by', read_only=True)
94-
file = serializers.FileField(required=False)
9593

9694
class Meta:
9795
model = EAPDocument
98-
fields = '__all__'
99-
read_only_fields = ('created_by',)
96+
fields = ['id', 'file']
10097

10198
def create(self, validated_data):
10299
validated_data['created_by'] = self.context['request'].user
@@ -112,11 +109,11 @@ class EAPSerializer(
112109
districts_details = MiniDistrictSerializer(source='districts', many=True, read_only=True)
113110
references = EAPReferenceSerializer(source='eap_reference', many=True, required=False)
114111
partners = EAPPartnerSerializer(source='eap_partner', many=True, required=False)
115-
# early_actions = EarlyActionSerializer(many=True)
116-
# created_by_details = UserNameSerializer(source='created_by', read_only=True)
117-
# modified_by_details = UserNameSerializer(source='modified_by', read_only=True)
118-
# hazard_type_details = DisasterTypeSerializer(source='disaster_type', read_only=True)
119-
# documents_details = EAPDocumentSerializer(source='documents', many=True, read_only=True, required=False)
112+
early_actions = EarlyActionSerializer(many=True)
113+
created_by_details = UserNameSerializer(source='created_by', read_only=True)
114+
modified_by_details = UserNameSerializer(source='modified_by', read_only=True)
115+
hazard_type_details = DisasterTypeSerializer(source='disaster_type', read_only=True)
116+
documents_details = EAPDocumentSerializer(source='documents', many=True, read_only=True, required=False)
120117
status_display = serializers.CharField(source='get_status_display', read_only=True)
121118

122119
class Meta:
@@ -151,15 +148,21 @@ class Meta:
151148
"ifrc_focal_email",
152149
"ifrc_focal_phone",
153150
"created_by",
151+
"created_by_details",
154152
"modified_by",
153+
"modified_by_details",
155154
"country",
156-
"disaster_type",
157-
"status_display",
158155
"country_details",
156+
# "districts",
159157
"districts_details",
158+
"disaster_type",
159+
"hazard_type_details",
160+
"status_display",
160161
"references",
161162
"partners",
162-
163+
"documents",
164+
"documents_details",
165+
"early_actions",
163166
]
164167

165168
def validate(self, validated_data):

eap/views.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,23 @@ class EAPViewSet(viewsets.ModelViewSet):
5757
permission_classes = [permissions.IsAuthenticated]
5858

5959
def get_queryset(self):
60+
# return EAP.objects.all()
6061
return EAP.objects.all().order_by(
6162
'-created_at'
6263
).select_related(
6364
'country',
65+
'created_by',
66+
# 'modified_by',
67+
'disaster_type',
6468
).prefetch_related(
6569
'districts',
66-
'eap_reference__eap',
67-
'eap_partner__eap'
70+
'documents',
71+
'early_actions',
72+
'early_actions__action',
73+
'early_actions__early_actions_prioritized_risk',
74+
'early_actions__indicators',
75+
'eap_reference',
76+
'eap_partner',
6877
)
6978

7079

@@ -73,7 +82,17 @@ class EAPActivationReportViewSet(viewsets.ModelViewSet):
7382
permission_classes = [permissions.IsAuthenticated]
7483

7584
def get_queryset(self):
76-
return EAPActivationReport.objects.all().order_by('-created_at')
85+
return EAPActivationReport.objects.all().order_by(
86+
'-created_at'
87+
).select_related(
88+
'created_by',
89+
'modified_by',
90+
'eap_activation',
91+
'ifrc_financial_report',
92+
).prefetch_related(
93+
'documents',
94+
'operational_plans',
95+
)
7796

7897

7998
class EAPOptionsView(views.APIView):

0 commit comments

Comments
 (0)