Бейсболист играет в игру, если он появляется в этой игре один или несколько раз. Итак, чтобы подсчитать количество игр, в которые играл игрок, вам нужно сосчитать игры, в которых есть иннинг, которые появляются у этого игрока.
Вот мои модели:
class Player(models.Model):
...
class Game(models.Model):
...
class Inning(models.Model):
game = models.ForeignKey(Game, on_delete=models.CASCADE)
class Appearance(models.Model):
inning = models.ForeignKey(Inning, on_delete=models.CASCADE)
player = models.ForeignKey(Player, on_delete=models.CASCADE)
Запрос SQL для достижения того, чего я хочу:
SELECT COUNT(*)
FROM games_game
WHERE id IN (SELECT game_id
FROM innings_inning
WHERE id IN (SELECT inning_id
FROM appearances_appearance
WHERE player_id = 1))
Как я могу сделать это в Django без использования Raw SQL?
Обратите внимание, что это для PlayerDetailView
, поэтому мне просто нужно это для одного Player
объекта.