diff --git a/api/drf_views.py b/api/drf_views.py index 3172d5e8c..40b14bad4 100644 --- a/api/drf_views.py +++ b/api/drf_views.py @@ -668,9 +668,13 @@ def get_serializer_class(self): def retrieve(self, request, pk=None, *args, **kwargs): if pk: try: + FR = Prefetch( + "field_reports", + queryset=FieldReport.objects.prefetch_related("countries", "contacts"), + ) if self.request.user.is_authenticated: if is_user_ifrc(self.request.user): - instance = Event.objects.get(pk=pk) + instance = Event.objects.prefetch_related(FR).get(pk=pk) else: user_countries = ( UserCountry.objects.filter(user=request.user.id) @@ -678,12 +682,13 @@ def retrieve(self, request, pk=None, *args, **kwargs): .union(Profile.objects.filter(user=request.user.id).values("country")) ) instance = ( - Event.objects.exclude(visibility=VisibilityChoices.IFRC) + Event.objects.prefetch_related(FR) + .exclude(visibility=VisibilityChoices.IFRC) .exclude(Q(visibility=VisibilityChoices.IFRC_NS) & ~Q(countries__id__in=user_countries)) .get(pk=pk) ) else: - instance = Event.objects.filter(visibility=VisibilityChoices.PUBLIC).get(pk=pk) + instance = Event.objects.prefetch_related(FR).filter(visibility=VisibilityChoices.PUBLIC).get(pk=pk) # instance = Event.get_for(request.user).get(pk=pk) except Exception: raise Http404 diff --git a/api/serializers.py b/api/serializers.py index e950931ec..8bce833db 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -843,8 +843,8 @@ class Meta: class MiniFieldReportSerializer(ModelSerializer): - contacts = FieldReportContactSerializer(many=True) - countries = MiniCountrySerializer(many=True) + contacts = FieldReportContactSerializer(many=True, read_only=True) + countries = MiniCountrySerializer(many=True, read_only=True) epi_figures_source_display = serializers.CharField(source="get_epi_figures_source_display", read_only=True) visibility_display = serializers.CharField(source="get_visibility_display", read_only=True)