From 7a3eeea3ec9fab624ba816df5bdf28270590dd97 Mon Sep 17 00:00:00 2001 From: Dylan Hillerbrand Date: Tue, 8 Oct 2024 16:04:25 -0400 Subject: [PATCH] fix(api): optimize json-cid view queries Use select_related to reduce queries on json_cid_export view --- django/cantusdb_project/main_app/views/api.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/django/cantusdb_project/main_app/views/api.py b/django/cantusdb_project/main_app/views/api.py index 7bd2a174e..f83cc6296 100644 --- a/django/cantusdb_project/main_app/views/api.py +++ b/django/cantusdb_project/main_app/views/api.py @@ -448,7 +448,13 @@ def json_cid_export(request, cantus_id: str) -> JsonResponse: """ # the API in OldCantus appears to only return chants, and no sequences. - chants = Chant.objects.filter(cantus_id=cantus_id).filter(source__published=True) + chants = ( + Chant.objects.select_related( + "source", "source__holding_institution", "feast", "genre", "service" + ) + .filter(cantus_id=cantus_id) + .filter(source__published=True) + ) chant_dicts = [{"chant": build_json_cid_dictionary(c, request)} for c in chants] response = {"chants": chant_dicts} return JsonResponse(response)