在我的Main
模型中,我有一个total_value
,我按此值排序。当用户输入值时,我希望告诉用户他的total_value
的顺序。我该怎么做?
换句话说,如果数据库中的total_value
是5,8,10,25并且用户输入了15的total_value
,我怎么告诉他他将在第4位?
谢谢!
答案 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对象上)。