Точнее то, что он есть - бесспорно. Но не могу найти никакой документаци по тому, как под капотом орма строятся запросы. Можно ли использовать querybuilder из недр джанги и как?
Возможностей самого орма уже не хватает, приходится использовать raw Запросы, которые уже переастают в отдельный querybuilder, что нехорошо.
@crazyzubr Если спрашиваете - значит врядли знаете джангу достаточно, что бы помочь. Банальные запросы с агрегацией по нескольким полям и разными таблицами.
@Rrooom это какой-то неверный вывод. Мне просто стало интересно с какими запросами обычный орм не справляется. Если это "Банальные запросы с агрегацией по нескольким полям и разными таблицами.", то в орм есть все методы для этого
Нет. Стандартные методы аннотации и агрегации подходят для слишком узких задач. Причем как писать кастомные - я тоже не нашел в документации, а изучать по внутренностям - для меня слишком круто.
Возможно стоит смотреть в сторону QuerySet базового класса. from django.db.models.query import QuerySet
Как пример использования - группировка:
query = Members.objects.all().query
query.group_by = ['designation']
results = QuerySet(query=query, model=Members)
Все канечно зависит от конкретных задач. Опишите пример где ORM бы не хватило для построения функционала. В большинстве случаев можно обойтись им.
Ну и всегда можно отнаследовать данный клас переписав несколько методов по своему усмотрению и использовать уже обновленный см. пример выше. Либо строить чистый SQL и использовать через cursor = connection.cursor() cursor.execute("SELECT foo FROM....") В этом нет ничего страшного. Так даже проще. Принцип KISS надо соблюдать. =)