Найти - Пользователи
Полная версия: aggregate с умножением
Начало » Django » aggregate с умножением
1
PROeXT
Добрый день. Нужна помощь.
Есть модель
class CartItem(...)
cart_id = models.CharField(...)
quantity = models.IntegerField(...)
price = models.DecimalField('Цена за единицу (новая)',
max_digits=8, decimal_places=2,
default=0)
Как мне с помощь Django ORM посчитать сумму price * quantity с группировкой по cart_id?

Заранее спасибо.
inoks
стандартно не реализуется, но зато вы можете быстро посчитать количество cart_id (навеяно документацией к джанге).
zhenya
а если в модели ввести:

def total(self):
	return self.price*self.quantity
Singularity
inoks
не пробовал конечно, но все же
.extra(select=("lineprice": "cartitem__price*cartitem__quantity")).aggregate(Sum('lineprice'))
inoks
Singularity,
наверное будет работать.

Вообще мне больше всего нравится первое решение по ссылке:
http://stackoverflow.com/questions/12165636/django-aggregation-summation-of-multiplication-of-two-fields
Singularity
inoks
данные которые тебе нужны один раз и которые будут вечно висеть в базе это разве хорошо?

Агрегация это ок.
inoks
От задачи зависит, в данном конкретном случае я бы хранил сумму
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB