Выбрасывание исключения в любом месте кода приводит к автоматической отдаче соответствующего ответа. А самостоятельно ответ можно вернуть, естественно, лишь оттуда, откуда предполагается именно HttpResponse. Из вьюхи.
Как вообще представляется сортировка по количеству чужих объектов?
SELECT COUNT(O.id) AS cnt, C.FirstName, C.LastName FROM Order O JOIN Customer C ON O.CustomerId = C.Id GROUP BY C.FirstName, C.LastName ORDER BY COUNT(O.id) DESC
Если в каком-то месте прям очень уж надо так отсортировать, и число записей у модели не миллионы, то можно аннотировать запрос и отсортировать уже в приложении, через sorted, с key=lambda x: x.m2m_count