我正在尝试找到一种有效的方法来查找数据库中与其分数相关的对象的排名。我天真的解决方案如下所示:
rank = 0
for q in Model.objects.all().order_by('score'):
if q.name == 'searching_for_this'
return rank
rank += 1
应该可以使用 order_by 让数据库进行过滤:
Model.objects.all().order_by('score').filter(name='searching_for_this')
但是似乎没有办法在过滤器之后检索 order_by 步骤的索引。
有一个更好的方法吗?(使用 python/django 和/或原始 SQL。)
我的下一个想法是在插入时预先计算排名,但这似乎很混乱。