在我的应用中,用户可以获得分数,并且他们的详细信息会存储在数据存储区中。当用户登录时,我想在所有用户中显示他们的排名(基本上与他们的最高分有多远)。所以我的解决方案是对用户进行排序'按降序排列的配置文件将索引+ 1放入配置文件模型并在cron中运行它。
然而,cron失败了。任何有关更好方法的帮助或建议都将受到赞赏:
from google.appengine.ext import db
def universal_rank(self):
users = Profile.all().filter('leaderboard =', l.key()).order('-score')
rank = 0
for user in users:
rank = rank + 1
user.rank = rank
db.put(users)
我正在使用webapp2
答案 0 :(得分:0)
我相信您的过滤器查询语法错误。来自文档,
https://docs.djangoproject.com/en/1.8/topics/db/queries/
看起来你需要的是这样的......
thread = threading.Thread(target=threadCode1)
thread2 = threading.Thread(target=threadCode2)
或者,实际上,我认为您不需要users = Profile.objects.all().filter('leaderboard =', l.key()).order('-score')
一般。
.all()
我对你获得users = Profile.objects.filter('leaderboard =', l.key()).order('-score')
的位置也不肯定,但如果你获得所有用户,我认为你可以做到
l.key()
答案 1 :(得分:0)
因此,似乎数据存储区无法批量超过某个限制。所以我把代码更改为如下:
from google.appengine.ext import db
def universal_rank(self):
users = Profile.all().filter('leaderboard =', l.key()).order('-score')
rank = 0
for user in users:
rank = rank + 1
user.rank = rank
user.put()