У меня есть две модели, Player и Match
class Player(PlayerModel):
points = models.PositiveIntegerField(default=0)
games_played = models.PositiveIntegerField(default=0)
wins = models.PositiveIntegerField(default=0)
draws = models.PositiveIntegerField(default=0)
defeats = models.PositiveIntegerField(default=0)
goals_scored = models.PositiveIntegerField(default=0)
goals_conceded = models.PositiveIntegerField(default=0)
goal_difference = models.IntegerField(default=0)
class Match(models.Model):
player1 = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='player1')
player2 = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='player2')
score1 = models.PositiveIntegerField(null=True, blank=True)
score2 = models.PositiveIntegerField(null=True, blank=True)
winner = models.ForeignKey(Player, null=True, blank=True, on_delete=models.CASCADE,related_name='winner')
Я хочу отсортировать объекты модели Player по их точкам, если точки равны, то по goal_difference, а если goal_difference равно, то я должен проверить посмотрите, кто выиграл матч между игроками с равными очками (поле победителя объекта Match).
def head_to_head():
table_list = []
match = Match.objects.all()
for m in match:
if m.player1 not in table_list:
table_list.append(m.player1)
if m.player2 not in table_list:
table_list.append(m.player2)
table_list.sort(key=lambda x: (x.points, x.goal_difference), reverse=True)
Но я не могу понять, как сортировать по матчам один на один.