Агрегирование значений с помощью поля foreignkey
У меня есть свойство модели, где я суммирую поле внешнего ключа product_price и поле модели spend:
@property
def price_total(self):
queryset = self.product.all().aggregate(
total_price=models.Sum('price'))
return queryset["total_price"] or 0 + self.spend
Это работает хорошо, но мне нужно изменить запрос фильтра:
@property
def total_purchases(self):
qs = super(PurchasesFilter, self).qs
return qs.filter(regular='False', paid='True').aggregate(total_price=Sum(F('spend') + F('product__price')))['total_price']
Этот запрос добавляет расходы только если добавлена цена продукта и дублирует значение расходов для каждого добавленного продукта. Мне нужен запрос, который всегда суммирует все расходы и добавляет цены продуктов, только если они добавлены к расходам. И значение расхода не дублировалось бы с каждым добавленным товаром.