Как суммировать ранги в django-orm annotate

модель

class ChampionKill(Event):
    start = models.ForeignKey('self', models.CASCADE, null=True, blank=True, related_name='sequence')
    damage = models.PositiveIntegerField()
    damage_contribution = models.FloatField()

    objects = ChampionKillManager()

manager

class ChampionKillManager(BaseManager):
    def get_queryset(self):
        return super().get_queryset().annotate(
            length=Count('sequence'),avg_damage_contribution=Avg('sequence__damage_contribution'),
            avg_interval=(
                Cast(Max('sequence__time') - Min('sequence__time'), models.FloatField())
                / F('length')
            ),
            rank_damage_contribution=Window(Rank(), order_by=F('avg_damage_contribution').desc()),
            rank_interval=Window(Rank(), order_by=F('avg_interval').asc()),
            # total_rank_score=(F('rank_damage_contribution') + F('rank_interval')),
            # rank_total=Window(Rank(), order_by=F('total_rank_score').asc()),
        )

Когда я добавляю "total_rank_score" и "rank_total" в annotete, я получаю следующую ошибку. (Я использую sqlite)

django.db.utils.OperationalError: неправильное использование оконной функции RANK()

Я хочу создать значение "total_rank_score" путем суммирования значения "rank_damage_contribution" и значения "rank_interval". Мне нужен совет.

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