我需要获取用户跟随的顶级股票代码,问题是当两个或更多用户关注同一代码时,在使用查询
Tickers.objects.annotate(followers=Count('users')).order_by('followers')
时会重复,如下所示:
在此示例中,代码
FDCFF
需要成为顶部代码,因为有两个用户正在关注它,相反,它会重复并且不会显示为顶部跟随的代码。
模型.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
定义索引(请求): tickers = Tickers.objects.annotate(followers=Count('users')).order_by( '-关注者' ) 上下文={ “股票行情”:股票行情, } 返回渲染(请求,'main_index.html',context=context)