1👍
Save for one syntax error (square brackets rather than parentheses after values_list
) this should work as you intended.
This induces only a single query. Note you can check the SQL that the ORM generates by accessing the .query
property of the queryset (the following was subsequently run through a SQL pretty-printer):
>>> str(qs.query)
SELECT
"yourapp_product"."id",
"yourapp_product"."parent_id",
"yourapp_product"."stock",
SUM((SELECT U0."stock" FROM "yourapp_product" U0 WHERE U0."parent_id" = (U0."id"))) AS "stock_sum"
FROM
"yourapp_product"
WHERE
"yourapp_product"."is_parent"
GROUP BY
"yourapp_product"."id",
"yourapp_product"."parent_id",
"yourapp_product"."stock";
Source:stackexchange.com