Я лично стараюсь проектировать свои модели, чтобы мне не пришлось писать необработанные SQL-запросы или отступать от микширования в ContentTypes
инфраструктуре для сложных отношений, поэтому у меня нет опыта втема.
Документация охватывает тему API для выполнения необработанных запросов SQL .Вы можете использовать Manager.raw()
в своих моделях (MyModel.objects.raw()
) для запросов, в которых вы можете сопоставить столбцы с фактическими полями модели, или пользователь cursor
для запроса необработанных строк в подключении к базе данных.
Если вы собираетесь использовать Manager.raw()
, вы будете работать с RawQuerySet
вместо обычного QuerySet
.Несмотря на все это, при работе с объектами результата оба контейнера одинаково эмулируют контейнеры, но QuerySet
- это более насыщенная функциональность монада.
Я могу себе представить, что выполнение необработанных запросов SQL в Django было бы более полезным, чемработа с платформой без поддержки ORM - Django может управлять схемой вашей базы данных и предоставлять вам соединение с базой данных, и вам нужно будет только вручную создавать запросы и позиционировать аргументы запроса.Полученные строки могут быть доступны как списки или словари, оба из которых делают его подходящим для отображения в шаблонах или выполнения дополнительного подъема.