66from typing import Any
77
88from django .core .exceptions import ObjectDoesNotExist
9- from django .db .models import Avg , CharField , F , Q , Value
9+ from django .db .models import Avg , CharField , Count , F , Q , Value
1010from django .db .models .functions import Concat
1111from django .http import Http404
1212from django .shortcuts import get_object_or_404 , redirect , render
@@ -182,7 +182,7 @@ def course_view(
182182 )
183183
184184
185- def course_instructor (request , course_id , instructor_id , method = "Most Recent " ):
185+ def course_instructor (request , course_id , instructor_id , method = "Default " ):
186186 """View for course instructor page."""
187187 section_last_taught = (
188188 Section .objects .filter (course = course_id , instructors = instructor_id )
@@ -194,8 +194,11 @@ def course_instructor(request, course_id, instructor_id, method="Most Recent"):
194194 course = section_last_taught .course
195195 instructor = section_last_taught .instructors .get (pk = instructor_id )
196196
197- # Find the total number of reviews (with or without text) for the given course
198- num_reviews = Review .objects .filter (instructor = instructor_id , course = course_id ).count ()
197+ # ratings: reviews with and without text; reviews: ratings with text
198+ reviews = Review .objects .filter (instructor = instructor_id , course = course_id ).aggregate (
199+ num_ratings = Count ("id" ), num_reviews = Count ("id" , filter = ~ Q (text = "" ))
200+ )
201+ num_reviews , num_ratings = reviews ["num_reviews" ], reviews ["num_ratings" ]
199202
200203 dept = course .subdepartment .department
201204
@@ -295,6 +298,7 @@ def course_instructor(request, course_id, instructor_id, method="Most Recent"):
295298 "course_id" : course_id ,
296299 "instructor" : instructor ,
297300 "semester_last_taught" : section_last_taught .semester ,
301+ "num_ratings" : num_ratings ,
298302 "num_reviews" : num_reviews ,
299303 "paginated_reviews" : paginated_reviews ,
300304 "breadcrumbs" : breadcrumbs ,
0 commit comments