Google App Engine:如何告知排序位置的用户值?

时间:2011-02-24 00:23:32

标签: python google-app-engine sorting

在我的Main模型中,我有一个total_value,我按此值排序。当用户输入值时,我希望告诉用户他的total_value的顺序。我该怎么做?

换句话说,如果数据库中的total_value是5,8,10,25并且用户输入了15的total_value,我怎么告诉他他将在第4位?

谢谢!

3 个答案:

答案 0 :(得分:2)

您需要编写一个查询,该查询计算小于用户total_value的值的数量。如果有许多Main个实体,这可能会很慢。在这种情况下,您可能希望仅将第一个N值计算得更小,然后停止(例如,告诉用户他们的排名为1000+)。您的查询可能如下所示:

# get the rank of total_value compared to existing total_values (up to 1,000)
rank = Main.all().filter('total_value <', total_value).count(1000) + 1

答案 1 :(得分:2)

David和Rahul建议的基于计数的解决方案只能为少数实体高效工作。如果要确定大型列表中的位置,则需要类似ranklist项目的内容。

答案 2 :(得分:1)

您可以获得total_value小于或等于当前用户total_value的实体数量。

您可以使用count()方法(在Query对象上)。