Подсчет комбинации из 2 полей

Я хотел бы получить все проигрывания песни на каждой радиостанции.

class Airplay(Timestamps):
    song = models.ForeignKey(Song, on_delete=models.CASCADE)
    radio = models.ForeignKey(Radio, on_delete=models.CASCADE)
    airedAt = models.DateTimeField(blank=True)

Я пытаюсь рассчитать эфир следующим образом

Airplay.objects.all().annotate(play_count=Count(Concat('song__id', 'radio__id'), distinct=True)).order_by('play_count')

Я вижу несколько вхождений комбинации песни и станции. Но play_count всегда 1.

Попробуйте это:

Airplay.objects.values('song', 'radio').annotate(play_count=Count('*')).order_by('play_count')

Это подсчитывает количество раз, когда экземпляр song воспроизводится на экземпляре radio.

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