У меня есть следующая модель:
class Pick(models.Model):
league = models.ForeignKey(League)
user = models.ForeignKey(User)
team = models.ForeignKey(Team)
week = models.IntegerField()
result = models.IntegerField(default=3, help_text='loss=0, win=1, tie=2, not started=3, in progress=4')
Я пытаюсь сгенерировать таблицу результатов на основе результатов, но я не уверен, как это сделать в одном запросе. Я заинтересован в получении для каждого пользователя в определенной лиге подсчета результатов, которые = 1 (как победа), 0 (как поражение) и 2 как ничья). Единственное, о чем я могу подумать, - это выполнить 3 отдельных запроса, где я отфильтрую результаты, а затем аннотирую так:
Pick.objects.filter(league=2, result=1).annotate(wins=Count('result'))
Pick.objects.filter(league=2, result=0).annotate(losses=Count('result'))
Pick.objects.filter(league=2, result=2).annotate(ties=Count('result'))
Есть ли более эффективный способ добиться этого?
Спасибо!