Skip to content

Commit 36ff3fd

Browse files
Merge pull request #1484 from IFRCGo/fix/performance-of-emergency-projects
Optimizing EmergencyProjectViewSet
2 parents b6fdb43 + 4ff52d2 commit 36ff3fd

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

deployments/drf_views.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -698,10 +698,10 @@ class EmergencyProjectViewSet(
698698
# ReadOnlyVisibilityViewsetMixin, # FIXME: This is required?
699699
viewsets.ModelViewSet,
700700
):
701-
# FIXME: N+1 Query
702-
queryset = EmergencyProject.objects.order_by('-modified_at').prefetch_related(
703-
'created_by', 'reporting_ns', 'districts', 'event', 'country'
704-
).all()
701+
queryset = EmergencyProject.objects.\
702+
select_related('created_by', 'reporting_ns', 'event', 'country', 'deployed_eru', 'modified_by').\
703+
prefetch_related('districts', 'activities').\
704+
order_by('-modified_at').all()
705705
# Intentionally not IsAuthenticated. Anons should see public EmergencyProjects:
706706
permission_classes = []
707707
filterset_class = EmergencyProjectFilter

deployments/serializers.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,12 @@ class EmergencyProjectSerializer(
539539

540540
class Meta:
541541
model = EmergencyProject
542-
fields = '__all__'
542+
fields = ('created_by_details', 'modified_by_details', 'reporting_ns_details',
543+
'deployed_eru_details', 'districts_details', 'activities', 'event_details',
544+
'activity_lead_display', 'status_display', 'country_details', 'visibility_display',
545+
'title', 'activity_lead', 'reporting_ns', 'event', 'country',
546+
'created_at', 'modified_at', 'start_date', 'end_date',
547+
) # '__all__'
543548
read_only_fields = (
544549
'created_by',
545550
'created_at',

0 commit comments

Comments
 (0)