Подсчет количества пользователей, следящих за тикером, в django
Мне нужно получить топ тикеров акций, за которыми следят пользователи, проблема в том, что когда два пользователя или более следят за одним тикером, он повторяется при использовании запроса Tickers.objects.annotate(followers=Count('users')).order_by('followers')
, как показано здесь:
В этом примере тикер FDCFF
должен быть верхним тикером, так как два пользователя следуют за ним, но вместо этого он повторяется и не отображается как верхний тикер, за которым следуют.
Models.py
class Tickers(models.Model):
symbol = models.CharField(max_length=100)
name = models.CharField(max_length=100)
users = models.ManyToManyField(User, related_name='tickers')
views.py
def index(request):
tickers = Tickers.objects.annotate(followers=Count('users')).order_by('followers')
context = {
'tickers': tickers,
}
return render(request, 'main_index.html', context=context)
Вы должны заказывать в убывающем порядке, поэтому -followers
, а не :followers
def index(request): tickers = Tickers.objects.annotate(followers=Count('users')).order_by( '-followers' ) context = { 'tickers': tickers, } return render(request, 'main_index.html', context=context)