Я использую Django 3 с PostgreSQL. Я хотел бы аннотировать свой набор запросов рангом на основе упорядочения по двум полям.
Моя упрощенная модель выглядит так
class Player(model.Models):
name = models.CharField()
primary_score = models.IntegerField()
secondary_score = models.IntegerField()
Набор запросов должен сначала упорядочиваться по primary_score, а затем для игроков с тем же primary_score
он должен иметь рейтинг secondary_score
. Затем переменная rank
должна быть аннотирована положением игрока в упорядоченном наборе запросов. Я могу сделать это для одного поля, но не знаю, как это сделать для обоих:
queryset = Player.objects.order_by('primary_score', 'secondary_score').annotate(rank=Window(expression=Rank(), order_by=F('primary_score').desc()))
Кроме того, это может привести к тому, что операция упорядочения будет выполняться дважды.
Любые идеи будут оценен.