2011-02-24 44 views
2

在我的Main模型中,我有一個total_value,我用這個值排序。當用戶輸入一個值時,我想告訴用戶他的訂單號碼爲total_value。我該怎麼做呢?Google App Engine:如何分辨用戶值的排序位置?

換句話說,如果數據庫中的total_value是5,8,10,25,並且用戶輸入了15的total_value,我該如何告訴他他將在第4位?

謝謝!

回答

2

您需要編寫一個查詢來計算比用戶的total_value小的值的數量。如果有很多實體,這可能會很慢。在這種情況下,您可能希望只計算較小的第一個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

你可以得到有實體數的計數total_value小於或等於當前用戶total_value

您可以使用count()方法來執行此操作(在Query對象上)。

+0

謝謝David Underhill和Rahul:'count()'的作品。 – Zeynel 2011-02-24 01:21:29

2

David和Rahul提出的基於計數的解決方案只能對少數實體有效地工作。如果你想確定一個大列表中的位置,你需要像ranklist項目。

+0

感謝您的參考。 '主'可能有大量的項目,但我只提取25,我需要知道25個項目內的排名。爲了這個目的,我假設'count()'是可以的。 – Zeynel 2011-02-24 01:49:36

+0

@Zeynel是的,對於那樣的小型結果集可以。 – 2011-02-24 04:19:08