Подсчет комбинации из 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
.