Django:过滤查询集分为两个级别

时间:2019-06-20 12:24:54

标签: python django

我的查询集是

qs = Event.objects.filter(organizer=1, status=EventStatus.LIVE,).exclude(tickets__status=TicketStatus.PAUSED,).values('pk', 'tickets__pk', 'tickets__quantity', 'tickets__price_gross')

结果我得到

<EventQuerySet [{'pk': 4, 'tickets__pk': 13, 'tickets__quantity': 20, 'tickets__price_gross': 2000}, 
                {'pk': 6, 'tickets__pk': 17, 'tickets__quantity': 123, 'tickets__price_gross': 2000}, 
                {'pk': 6, 'tickets__pk': 16, 'tickets__quantity': 10, 'tickets__price_gross': 1000}, 
                {'pk': 5, 'tickets__pk': 14, 'tickets__quantity': 10, 'tickets__price_gross': 1000}
                ]>

现在,我面临的挑战是,要为自己的价值观注释tickets_left。为此,我1)必须计算与会者。我走了那么远.annotate(sold_tickets=Count('attendees', filter=Q(attendees__canceled=False)))。 2)我必须减去门票__数量-参与者。结果剩下票了。

但是我仍然无法得到这样的结果

<EventQuerySet [{'pk': 4, 'tickets__pk': 13, 'tickets__quantity': 20, 'tickets__price_gross': 2000, 'tickets_left' 123}, 
                {'pk': 6, 'tickets__pk': 17, 'tickets__quantity': 123, 'tickets__price_gross': 2000 'tickets_left' 322},

我现在无法解决的问题是,与会者被计为“每张票”。您是否有解决方法的想法?

0 个答案:

没有答案