Предположим, у меня есть клиенты в моей модели (модель Client), и каждый клиент имеет корзину покупок (модель Cart). Каждая тележка имеет много элементов (модель CartItems), а затем для завершения, каждый элемент имеет отношение к одному продукту (модель продукта).Django, выберите родственный, средний, многоголовое поле
Теперь вот моя проблема. Я хочу иметь среднее количество всех тележек для покупок, которые основаны на сумме всех позиций каждой корзины для каждого клиента. Поэтому я попытаюсь продемонстрировать вам более подробно ниже.
Попробуйте представить себе направления отношений, как это: Client-> cart-> CartItems < -Продукт
упрощенное описание каждой модели:
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;
Каждый имеет ни малейшего представления о том, как преобразовать этот запрос Джанго» модели модели?
Ответ не беспокоить. Просто используйте необработанный запрос. Нет причин, по которым вы не должны (за исключением того факта, что если вы повторяете запрос несколько раз, запрос будет выполняться каждый раз) – e4c5
Но если это так, я могу использовать Paginator нормально, точно так же, как если бы это был запрос? – user3707567
Вы правы, вы не можете использовать стандартные paginators с rawqueryset – e4c5