Django:在查询s中乘法

2024-09-26 17:50:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道我计算quantity * price_gross的方法是否正确。或者有更好的方法在Ticket.objects.查询集中乘以这些值吗

event = Event.objects.get(pk=4)

test = Ticket.objects.filter(event=event).values('quantity', 'price_gross')
result = 0
for x in test:
    result += x['quantity']*x['price_gross']

print(result)

更新时间:

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'))

Tags: 方法intesteventobjectsresultfilterticket
2条回答

是的。确实有一种方法可以做到这一点,那就是使用Query Expressions

test = Ticket.objects.filter(event=event).annotate(total=F('quantity') * F('price_gross'))

您还可以进一步在数据库中进行求和(未测试!但应该多多少少工作):

from django.db.models import F, Sum

result = (
    Ticket.objects.filter(event=event)
    .values('quantity', 'price_gross')
    .annotate(total=F('quantity') * F('price_gross'))
    .aggregate(Sum('total'))
)

相关问题 更多 >

    热门问题