Несколько вызовов .order () с использованием Google App Engine - PullRequest
0 голосов
/ 26 февраля 2012

Можно ли указать несколько вызовов .order () при выполнении запроса в Google App Engine для получения сортировки подмножеств?Вы можете сделать это в GQL, поэтому я предположил, что вы можете сделать это как вызовы .order (), но это, похоже, не работает.

q = Score.all()
q.filter("level = ", level)
q.order("-score")
q.order("-submitted")
scoreList = q.fetch(10)

Это отсортировало бы высокие баллы равного значения ссамые свежие наверху.

1 Ответ

0 голосов
/ 27 февраля 2012

Роджер, попробуйте это в вашей среде разработки и посмотрите, работает ли оно:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...