diff --git a/b2b/views/v0/__init__.py b/b2b/views/v0/__init__.py index 464aa29b6d..636e273487 100644 --- a/b2b/views/v0/__init__.py +++ b/b2b/views/v0/__init__.py @@ -54,7 +54,9 @@ class ContractPageViewSet(viewsets.ReadOnlyModelViewSet): def get_queryset(self): """Filter to only return active contracts by default.""" - return ContractPage.objects.filter(active=True) + return ContractPage.objects.filter(active=True).prefetch_related( + "contract_programs" + ) class Enroll(APIView): diff --git a/courses/views/v1/__init__.py b/courses/views/v1/__init__.py index 9ac4044f02..817413f954 100644 --- a/courses/views/v1/__init__.py +++ b/courses/views/v1/__init__.py @@ -244,14 +244,15 @@ def get_queryset(self): if relevant_to: course = Course.objects.filter(readable_id=relevant_to).first() if course: - return get_relevant_course_run_qset(course) + return get_relevant_course_run_qset(course).prefetch_related("products") else: program = Program.objects.filter(readable_id=relevant_to).first() - return ( - get_user_relevant_program_course_run_qset(program) - if program - else Program.objects.none() - ) + if program: + return get_user_relevant_program_course_run_qset( + program + ).prefetch_related("products") + else: + return CourseRun.objects.none() else: return ( CourseRun.objects.select_related("course") @@ -259,6 +260,7 @@ def get_queryset(self): "course__departments", "course__page", "enrollment_modes", + "products", ) .filter(live=True) ) diff --git a/courses/views/v2/__init__.py b/courses/views/v2/__init__.py index 80c7e0b8e8..4fb1b899ef 100644 --- a/courses/views/v2/__init__.py +++ b/courses/views/v2/__init__.py @@ -337,7 +337,12 @@ def filter_queryset(self, queryset): if "courserun_is_enrollable" not in filter_keys: queryset = queryset.prefetch_related( - Prefetch("courseruns", queryset=CourseRun.objects.order_by("id")), + Prefetch( + "courseruns", + queryset=CourseRun.objects.order_by("id").prefetch_related( + "products" + ), + ), ) return queryset