Учитывая, что во многих проектах достаточно много простых запросов (выборка по одной таблице, вставка, обновление), ORM для них использовать удобно. Единственное, когда у вас имеются связи между сущностями, следует внимательно следить за тем, какие запросы делаются к СУБД и главное, сколько их. Для Django есть [django-debug-toolbar](
https://github.com/jazzband/django-debug-toolbar), с помощью которого это можно отслеживать.
Минусы ORM - неочевидность и недостаточная гибкость. Например, если мне нужно сделать UNION нескольких таблиц, для конкретного поля каждой из которых сделать alias (потому что нужные для сортировки поля называются в них по-разному), по которому выполнить сортировку всех результатов, думаю, от ORM придется отказаться. В реальных проектах, к сожалению, такие запросы встречаются сплошь и рядом, поэтому вместо ORM удобней использовать query билдеры.
Но в Django на встроенную ORM много чего завязано, поэтому отказаться от нее сложно. Я имею в виду, что если не использовать в проекте на Django встроенную ORM, то и использовать Django вообще особо смысла не имеет.