GAE: лучший способ добавить (математически) все значения целочисленного свойства из нескольких экземпляров - PullRequest
1 голос
/ 03 декабря 2011

У меня есть около 400+ экземпляров модели определенной модели ("Grade") в моем хранилище данных. Все они имеют целочисленное свойство с именем «points» (points = db.IntegerProperty (default = 0)) с разными значениями.

Каков наилучший способ получить совокупную сумму всех «точек» значений для каждого экземпляра? Есть ли способ сделать это без необходимости извлекать все экземпляры с помощью Model.all ()?

1 Ответ

0 голосов
/ 04 декабря 2011

Вы могли бы сначала выполнить GQL-запрос, чтобы получить ключи всех сущностей, которые имеют значение точек> 0:

SELECT __key__ FROM Grade WHERE points > 0

Таким образом, вы получаете только те объекты, которые вам нужны, и игнорируете любые объекты, которые математически не имеют значения. Затем вы можете выполнить цикл, в котором вы извлекаете каждую сущность, для которой вы получаете ключ, выполняя db.get (Key) для каждого ключа и добавляя точки до переменной.

В GAE запросы, которые получают только ключи, более эффективны и стоят дешевле: http://code.google.com/appengine/docs/python/datastore/queries.html#Queries_on_Keys

...