From beb0cff5b07f2ebef1ac33be3396530ea54c922b Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 22 Jan 2024 14:01:56 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=AB=20[IMPR]=20Add=20prefetch=20to=20o?= =?UTF-8?q?ptimize=20APIv2=20Outdoor=20views=20(refs=20#3569)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- geotrek/api/v2/views/outdoor.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/geotrek/api/v2/views/outdoor.py b/geotrek/api/v2/views/outdoor.py index 37bd380c5f..0b89aeb8a8 100644 --- a/geotrek/api/v2/views/outdoor.py +++ b/geotrek/api/v2/views/outdoor.py @@ -23,10 +23,12 @@ def get_queryset(self): activate(self.request.GET.get('language')) return outdoor_models.Site.objects \ .annotate(geom_transformed=Transform(F('geom'), settings.API_SRID)) \ + .select_related('parent', 'practice', 'type') \ .prefetch_related(Prefetch('attachments', queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure')), Prefetch('view_points', - queryset=HDViewPoint.objects.select_related('content_type', 'license').annotate(geom_transformed=Transform(F('geom'), settings.API_SRID)))) \ + queryset=HDViewPoint.objects.select_related('content_type', 'license').annotate(geom_transformed=Transform(F('geom'), settings.API_SRID))), + 'information_desks', 'labels', 'managers', 'pois_excluded', 'portal', 'ratings', 'source', 'themes', 'web_links') \ .order_by('name') # Required for reliable pagination @@ -94,5 +96,8 @@ def get_queryset(self): return outdoor_models.Course.objects \ .annotate(geom_transformed=Transform(F('geom'), settings.API_SRID)) \ .prefetch_related(Prefetch('attachments', - queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure'))) \ + queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure')), + Prefetch('course_children', queryset=outdoor_models.OrderedCourseChild.objects.select_related('parent', 'child')), + Prefetch('course_parents', queryset=outdoor_models.OrderedCourseChild.objects.select_related('parent', 'child')), + 'parent_sites', 'pois_excluded', 'ratings', 'type') \ .order_by('name') # Required for reliable pagination