Предположим, у меня есть клиенты в моей модели (модель «Клиент»), и предположим, что у каждого клиента есть корзина для покупок (модель «Корзина»). В каждой корзине много товаров (модель 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?