#django #django-orm #rank
Вопрос:
Модель
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()
менеджер
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» в аннотации, я получаю следующую ошибку.(Я использую sqlite)
django.db.utils.OperationalError: неправильное использование РАНГА оконной функции()
Я хочу создать значение «total_rank_score», суммируя значение «rank_damage_contribution» и значение «rank_interval». Мне нужен совет.