Используйте SQL-подобную функцию с хранилищем данных GAE - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть свойство (isFull) в модели, значение которого зависит от других свойств в той же модели (counter).

До сих пор я сам устанавливал значение свойства всякий раз, когда любое из свойств зависит от изменения. Я написал функцию isFull(), которая проверяет counter и возвращает True или False. Но я не могу использовать его с запросом, если я не получу все, а затем переберу результаты, проверяя, если какой-либо из них isFull, что ПЛОХО, я знаю ..

Есть ли способ использовать мою функцию с filter или gql? или есть другой способ сделать это? Я знаю, что могу использовать фильтр для проверки счетчика, но он становится более сложным, чем в некоторых случаях, когда мне нужно проверить даты, счетчик и другой флаг одновременно.

Ответы [ 2 ]

4 голосов
/ 21 декабря 2011

Используйте ComputedProperty , чтобы сохранить вычисленное значение в качестве свойства в хранилище данных, по которому можно выполнить фильтрацию.

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

Я не знаю, как автоматически пересчитать свойство, когда другое изменилось.Хотя вы можете скрыть некоторые обновления, создав пользовательское свойство, вам все равно придется вручную обновлять его при обновлении свойств, от которых оно зависит.

Вместо этого вы можете захотеть сделать так, чтобы свойство isFull устарело,цепочка фильтрации, что-то вроде

query.filter('counter >', 42)
query.filter('created <', datetime(2011,12,21))
query.filter('created >', datetime(2011,12,19))
query.filter('myflag =', true)
...