Мой набор запросов
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) Я должен сделать вычитание tickets__quantity - участников .Результат - билеты оставлены.
Но мне все еще не удается получить такой результат, как
<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},
Проблема, которую я не могу сейчас исправить, состоит в том, что количество участников подсчитывается "за билет ".У вас есть идеи, как это решить?