在GAE的数据存储区中使用类似SQL的函数

时间:2011-12-20 22:31:41

标签: python google-app-engine google-cloud-datastore gql

我在模型中有一个属性(isFull),其值取决于同一模型中的其他属性(counter)。

到目前为止,我一直在设置属性值,只要它依赖于任何属性的变化。我写了一个函数isFull()来检查counter并返回TrueFalse。但我不能将它用于查询,除非我获取所有内容然后迭代结果检查其中任何一个isFull,这是我知道的不好。

有没有办法在filtergql中使用我的功能?或者有不同的方式吗?我知道我可以使用过滤器来检查计数器,但它比在某些情况下更复杂,我需要同时检查日期,计数器和另一个标志。

2 个答案:

答案 0 :(得分:4)

使用ComputedProperty将您的计算值存储为可以过滤的数据存储区中的属性。

答案 1 :(得分:0)

我不知道在另一个属性发生变化时如何自动重新计算属性。虽然您可以通过创建自定义属性来隐藏某些更新,但在更新它依赖的属性时仍需要手动更新它。

您可能希望通过链接过滤来使对isFull属性的需求过时,这与

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