在Google App Engine中执行查询以获取子集排序时,是否可以指定多个.order()调用?您可以在GQL中执行此操作,因此我假设您可以将其作为.order()调用来执行此操作,但它似乎无法正常工作。
q = Score.all()
q.filter("level = ", level)
q.order("-score")
q.order("-submitted")
scoreList = q.fetch(10)
这会将最高等级的高分数排在最前面。
答案 0 :(得分:0)
Roger,在您的开发环境中尝试此操作,看看它是否有效:
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.ext import db
class Score(db.Model):
level = db.IntegerProperty()
score = db.IntegerProperty()
submitted = db.IntegerProperty()
class MainHandler(webapp.RequestHandler):
def get(self):
level = 1
if Score.all().count() == 0:
Score(level = 1, score = 10, submitted = 10).put()
Score(level = 1, score = 10, submitted = 11).put()
Score(level = 1, score = 10, submitted = 12).put()
Score(level = 1, score = 11, submitted = 10).put()
Score(level = 1, score = 11, submitted = 20).put()
Score(level = 1, score = 12, submitted = 10).put()
q = Score.all().filter("level = ", level).order("-score").order("-submitted")
score_list = q.fetch(10)
self.response.out.write([
(s.level, s.score, s.submitted) for s in score_list ])
def main():
application = webapp.WSGIApplication([('/', MainHandler)],
debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()