假设我的模型中有客户(模型客户端),并假设每个客户都有一个购物车(模型车)。每个购物车有许多项目(模型 CartItems),然后完成,每个项目与一个产品(模型产品)有关系。
现在,我的问题来了。我想要每个客户的所有购物车的平均值,它基于每个购物车的所有项目的总和。因此,我将尝试在下面向您展示更多详细信息。
试着想象这样的关系方向:Client->Cart->CartItems<-Product
各型号简述:
Client (
id #pk
)
Cart (
id #pk
client_id #fk that references to Client.id
)
CartItems (
id #pk
cart_id #fk that references to Cart.id
product #fk that references to Product.id
)
ProductId (
id #pk
value # The price of the product
)
在纯 SQL 中,我找到了解决方案,类似于以下查询:
SELECT * FROM Client
INNER JOIN Cart ON Client.id = Cart.client_id
INNER JOIN
(SELECT AVG(c.total) AS average, cart_id FROM
(SELECT SUM(Product.price) AS total, CartItems.cart_id AS cart_id
FROM CartItems
INNER JOIN Product ON CartItems.product = Product.id
GROUP BY CartItems.cart_id) AS c GROUP BY c.cart_id) AS d
ON d.cart_id = Cart.id;
任何人都知道如何将此查询转换为 Django 模型的模式?