Django select from many-to-many

Базовая модель.

class Game(models.Model):
    date = models.DateField()
    ...

class Player(models.Model):
    user = models.OneToOneField(User, default=None, on_delete=models.CASCADE)
    games = models.ManyToManyField(Game, through='PlayerGame')
    ...

class PlayerGame(models.Model):
    player = models.ForeignKey(Player, on_delete=models.CASCADE)
    game = models.ForeignKey(Game, on_delete=models.CASCADE)
    score = models.IntegerField()
    ...

В каждой игре будет два игрока с соответствующими оценками.

Когда один игрок/пользователь входит в систему, я хотел бы отобразить все его игры против других игроков.

например, Игрок 1 вошел в систему...

Date Opponent Your Score Opponent Score
2022-01-01 Player 2 31 27
2021-06-02 Player 4 31 26
2021-06-02 Player 2 5 31
2021-05-27 Player 6 20 31

Если Игрок 2 вошел в систему, он может увидеть

Date Opponent Your Score Opponent Score
2022-01-01 Player 1 27 31
2021-06-02 Player 1 31 5

Есть идеи, как написать запрос для этого?

Вернуться на верх