Django (как и другие подобные инструменты ORM) - это связь между реляционными базами данных и объектно-ориентированным программированием. Одной из очень важных функций, которые он реализует, является предоставление унифицированного интерфейса к базе данных - независимо от базовой базы данных.
Когда вы используете базовую функциональность Django, код должен поддерживаться в любой базе данных (может бытьконкретные ограничения на это). Это делает его особенно легко портировать на другую базу данных. Это также помогает гарантировать, что сгенерированные запросы будут выполнять то, что вы намерены.
Когда вы используете сырой SQL, код, вероятно, будет специфичным для одной базы данных (создавая проблему переноса). Код также не проверяется, что может привести к трудным для понимания ошибкам.
У меня есть сильное предпочтение использовать SQL напрямую, но это потому, что я не программист, использующий среду ORM. Если вы собираетесь использовать такую платформу, лучше использовать встроенную функциональность везде, где это возможно.