Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 27, 2011 01:58:10

PROeXT
От:
Зарегистрирован: 2008-06-05
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

aggregate с умножением

Добрый день. Нужна помощь.
Есть модель

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?

Заранее спасибо.



Офлайн

#2 Июль 2, 2014 14:56:00

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

aggregate с умножением

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

Офлайн

#3 Июль 2, 2014 22:44:43

zhenya
Зарегистрирован: 2014-07-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

aggregate с умножением

а если в модели ввести:

def total(self):
	return self.price*self.quantity

Офлайн

#4 Июль 2, 2014 22:56:26

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

aggregate с умножением

inoks
не пробовал конечно, но все же

.extra(select=("lineprice": "cartitem__price*cartitem__quantity")).aggregate(Sum('lineprice'))

Офлайн

#5 Июль 3, 2014 15:59:33

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

aggregate с умножением

Singularity,
наверное будет работать.

Вообще мне больше всего нравится первое решение по ссылке:
http://stackoverflow.com/questions/12165636/django-aggregation-summation-of-multiplication-of-two-fields

Офлайн

#6 Июль 3, 2014 17:42:08

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

aggregate с умножением

inoks
данные которые тебе нужны один раз и которые будут вечно висеть в базе это разве хорошо?

Агрегация это ок.

Офлайн

#7 Июль 3, 2014 18:07:29

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

aggregate с умножением

От задачи зависит, в данном конкретном случае я бы хранил сумму

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version