FanTechОРМ создает те же самые запросы, тут нет никакой магии. Ты можешь написать как-то так
query = Product.objects.all()
и получишь выборку из БД, серелализованную в набор питоньих объектов. ОРМ при этом сам создал запрос типа такого.
SELECT "ID", "NAME", "COST", "COUNT" FORM PRODUCT
, создал слединение, курсор, получил данные, и представил эти данные как список объектов.
Ты можешь все это делать сам. ОРМы написаны на питоне, значит тебе доступны все механизмы, которые они используют.
FanTech
При переходе на другую базу достаточно было изменить пару строк
Ага, а теперь покажи как будет выглядеть формирование запроса по пользовательским фильтрам. Представь, есть тот же самый товар как выше, но пользователь ГЕТ запросом выбирает не все записи, а соответсвующие фильтру если фильтр указан.
С ОРМ это делается так
#
# GET = {"name__icontains": "Шуба", "cost__range": [0, 100000]}
#
#
query = Product.objects.filter(**request.GET)