我正在使用Django ORM查询名为列名为price(Decimal)和stock_units(int)的Product的数据库。我想将两列都乘以并得到累积的总和。
report = Product.objects.filter(stock_units__gte=1).aggregate(Count('name'), Sum('stock_units'), Sum(F('price')*F('stock_units')))
我希望输出为{
"Total product Sold ": {
"name__count": 2,
"stock_units__sum": 844,
"Total amount": 84400
}
}
但是由于错误:
TypeError:“ F”对象不可下标
答案 0 :(得分:1)
首先使用annotate()将价格和股票单位相乘,然后在聚合()中使用此注释。像这样:
report = Product.objects.filter(stock_units__gte=1)\
.annotate(value=F('price') * F('stock_units'))\
.aggregate(
count=Count('name'),
stock=Sum('stock_units'),
total_value=Sum('value')
)