Skip to main content
 首页 » 编程设计

python之Django:在查询集中乘以

2024年11月24日23davidwang456

我想知道我计算 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')) 

请您参考如下方法:

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

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