gpt4 book ai didi

python - Django:按 "event__pk"聚合

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:36 24 4
gpt4 key购买 nike

我得到这些查询结果

<QuerySet [{'event__pk': 4, 'pk': 15, 'total_gross': 12340000}, {'event__pk': 4, 'pk': 13, 'total_gross': 123000}, {'event__pk': 5, 'pk': 22, 'total_gross': 1234000}]>

我正在处理的问题是我正在尝试聚合 total_gross 每个事件。但是,总是在我添加 .aggregate(Sum('total_gross')) 时, Django 只是聚合了一切。知道如何解决这个问题吗?

max_total_gross_per_ticket = (
Ticket.objects.filter(
event__organizer__in=self.organizers,
event__status=EventStatus.LIVE,
).values('event__pk', 'pk')
.order_by('event__pk')
.annotate(
total_gross=F('quantity') * F('price_gross'),
)
# .aggregate(Sum('total_gross'))
)

最佳答案

您应该从值中排除 pk,您还应该在注释中添加一个 Sum(..) 函数:

from django.db.models import <b>Sum</b>

max_total_gross_per_ticket = Ticket.objects.filter(
event__organizer__in=self.organizers,
event__status=EventStatus.LIVE,
).values(<b>'event__pk'</b>).annotate(
total_gross=<b>Sum(</b>F('quantity') * F('price_gross')<b>)</b>,
).order_by('event__pk')

然而,在这里注释 Event 对象更有意义,例如:

from django.db.models import <b>Sum</b>

Event.objects.filter(
organizer__in=self.organizers,
status=EventStatus.LIVE
).annotate(
<b>total_gross=Sum(F('tickets__quantity') * F('tickets__price_gross'))</b>
)

然后 Event 将有一个额外的属性 total_gross,其中包含门票的总和(他们的 quantity 乘以他们的 price_gross )。

关于python - Django:按 "event__pk"聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56603789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com