class Blog(models.Model):
name = models.CharField(max_length=200)
rating = models.IntegerField()
country = models.CharField(max_length=50)有两顶:
我需要在每个评级中提供职位。F.e.
数据库中的博客:
世界排名第一:
按俄罗斯国家分列的最高评级:
我怎样才能得到博客的地位,根据评级?
更新:
我应该能做一些这样的思考:
Blog.objects.get(pk=1).world_position # output = 23
Blog.objects.get(pk=1).country_position # output = 14因为使用order_by进行简单的迭代(“评级”)并不合适。
发布于 2013-07-12 09:47:11
应该像这样简单
for i, blog in enumerate(Blog.objects.all().order_by('-rating')):
i, blog
Blog.objects.filter(country='Russia').order_by('-rating')如果有非常大的数据集,可以查看原始Sql以获得行号。
更新:虽然这对于大型数据集并不有效,您应该考虑使用原始SQL获取行号,或者您可以找到一种方法来根据博客对象的评级来存储排名。
class Blog(models.Model):
name = models.CharField(max_length=200)
rating = models.IntegerField()
country = models.CharField(max_length=50)
@property
def world_position(self):
ids = list(Blog.objects.all().order_by('-rating').values_list('id', flat=True))
return ids.index(self.id) https://stackoverflow.com/questions/17611883
复制相似问题