モデル (モデル Client) にクライアントがあり、各クライアントにショッピング カート (モデル Cart) があるとします。各カートには多くのアイテム (モデル CartItems) があり、最後に、各アイテムには 1 つの製品 (モデル Product) との関係があります。
さて、ここに私の問題があります。クライアントごとに、各カートのすべてのアイテムの合計に基づく、すべてのショッピング カートの平均を取得したいと考えています。そのため、以下で詳細を説明します。
次のような関係の方向を想像してみてください: 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 のモデルのパターンに変換する方法を知っている人はいますか?