Skip to content

Commit 1d43e98

Browse files
Merge pull request #2193 from IFRCGo/feature/fix-eru-n+1
Fix ERU query n+1 issue
2 parents bbb563c + 2a8d28e commit 1d43e98

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

deployments/drf_views.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,20 @@ class ERUViewset(viewsets.ReadOnlyModelViewSet):
9999
authentication_classes = (TokenAuthentication,)
100100
# Some figures are shown on the home page also, and not only authenticated users should see them.
101101
# permission_classes = (IsAuthenticated,)
102-
queryset = ERU.objects.all()
102+
queryset = ERU.objects.select_related("eru_owner").prefetch_related(
103+
"deployed_to",
104+
"event",
105+
"event__appeals",
106+
"event__dtype",
107+
"event__countries",
108+
"event__field_reports",
109+
"event__field_reports__countries",
110+
"event__field_reports__contacts",
111+
"eru_owner__national_society_country",
112+
"eru_owner__eru_set",
113+
"eru_owner__eru_set__deployed_to",
114+
)
115+
# ERUSerializer uses ERUOwnerSerializer which uses ERUSetSerializer (~circle)
103116
serializer_class = ERUSerializer
104117
filterset_class = ERUFilter
105118
ordering_fields = (

deployments/serializers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class Meta:
8686
)
8787

8888

89+
# ERUSerializer uses ERUOwnerSerializer which uses ERUSetSerializer (~circle)
8990
class ERUSerializer(ModelSerializer):
9091
deployed_to = MiniCountrySerializer()
9192
event = ListEventSerializer(allow_null=True, required=False)

0 commit comments

Comments
 (0)