Реализация SQL-запроса Django в ORM с использованием объединений и группировок
Этот запрос должен вернуть общую сумму (quantity - qty_fulfilled)
, сгруппированную по product_id
.
Я застрял, пытаясь преобразовать этот sql-запрос postgres в запрос ORM. Этот sql запрос работает, но метод get_queryset()
в моделях Admin не поддерживает RawQueryset
, как указано здесь, так что это должно быть в форме Queryset.
select t1.id, t3.req_from_orders from inventory_inventory t1
left join
product_app_product t2
on t1.product_id = t2.id
left join
(
select product_id, sum(quantity) - sum(qty_fulfilled) as req_from_orders
from order_app_cartitem oac
group by oac.product_id
) t3
on t1.product_id = t3.product_id
Модели:
* Inventory
* product_id (OneToOneField)
* id (UUID)
* Product
* id (UUID)
* CartItem
* id (UUID)
* product_id (ForeignKey)
* quantity (int)
* qty_fulfilled (int)
* Inventory <-> Product <-* CartItem
Пробовал использовать annotate(RawSQL="<query>", params=(param,))
, но параметры не могут принимать динамические идентификаторы.
Любая помощь будет высоко оценена.