Как и любое достижение прогресса ORM-ы в каких-то кейсах хороши и удобны, а в некоторые моменты - раздражают.
Например, когда речь о Django и случае, когда ты хочеш выполнить raw-запрос с группировкой ( чтобы не париться с нечевидными annotate и импортом нужных агрегатных функций ) .
Пример:
r = CourseStudent.objects.raw("select course_id, count(*) as c from coursestudent group by course_id order by c")
В ответ мы видим:
Raw query must include the primary key
WTF? Как я вам воткну pk в запрос с группировкой по произвольному ключу ?
К счастью, обойти просто - вот такой запрос спокойно отработает:
r = CourseStudent.objects.raw("select course_id as id, count(*) as c from coursestudent group by course_id order by c")
- мы немного схимичили, и навесили на произвольный ключ alias, такой же как pk таблицы, к которой мы делаем наш произвольный запрос