简而言之,我想知道如何在Django中表达以下SQL查询
SELECT SUM(product.cost_price * product.markup_percentage) from product
INNER JOIN shopping_cart on shopping_cart.product_id = product.id
WHERE shopping_cart.user_id = <user_id>;
有一个ShoppingCart模型,它有一个FK到产品模型。我正在尝试获取用户为其购物车中的所有产品支付的总金额。
目前,在product
表中添加另一列不是一种选择。
我知道我可以做到
shopping_cart = ShoppingCart.objects.select_related('product').filter(user_id=<user_id>)
检索产品列表并在python代码中执行产品操作的总和。
Sumproduct using Django's aggregation中建议的答案不符合答案评论中的提及。
除了编写原始SQL查询或在python中进行计算之外,还有其他方法可以在Django中执行此操作吗?
答案 0 :(得分:0)
如果将其更改为此,其他答案是否有效?
.extra(
select={'actual_price': 'SUM(cost_price * markup_percentage)'},
).aggregate(total=Sum('actual_price'))['total']