django如何对商品加总*购物车中每个商品的数量

时间:2019-09-16 22:28:56

标签: django django-models django-rest-framework django-templates django-views

如何对购物车中的每个项目进行汇总*数量,例如第一个项目10 *-数量=总计,第二个项目x *数量=总计,此总和给了我购物车中所有项目的总和,而不是每个项目。

def add_produktshitje(request, shitje_id):
shitje = get_object_or_404(Shitje, id=shitje_id)
suma= Produ.objects.filter(shitje_id=shitje.pk).aggregate(totals=Sum(F('sasia')*F('cmimi'), output_field=FloatField()))
return render(request, 'polls/add_produktshitje.html', {'shitje':shitje,'suma':suma})

1 个答案:

答案 0 :(得分:1)

那是因为您使用的是“汇总”,这是为了获得总计。您应该使用“注释”来获得所需的部分聚合。

更改此行

suma= Produ.objects.filter(shitje_id=shitje.pk).aggregate(totals=Sum(F('sasia')*F('cmimi'), output_field=FloatField()))

此行

suma= Produ.objects.filter(shitje_id=shitje.pk).values("product_name").annotate(totals=Sum(F('sasia')*F('cmimi'), output_field=FloatField()))

请注意,我添加了values("product_name"),这样您可以选择要对注释进行分组的字段。我只是把“ product_name”放在您提到的购物车上,但是可以根据需要替换该字符串。

https://docs.djangoproject.com/en/2.2/topics/db/aggregation/#generating-aggregates-for-each-item-in-a-queryset

希望这会有所帮助。