【问题标题】:Use an SQL-like function with GAE's datastore在 GAE 的数据存储中使用类似 SQL 的函数
【发布时间】:2011-12-20 22:31:40
【问题描述】:

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

到目前为止,每当它所依赖的任何属性发生变化时,我一直在自己设置该属性的值。我写了一个函数isFull() 检查counter 并返回TrueFalse。但是我不能在查询中使用它,除非我获取所有内容然后遍历结果检查是否有任何isFull,我知道这很糟糕..

有没有办法将我的函数与 filtergql 一起使用?还是有不同的方法?我知道我可以使用过滤器来检查计数器,但在某些情况下,它比我需要同时检查日期、计数器和另一个标志的情况更复杂。

【问题讨论】:

  • 我想过把查询保存在模型类中,在那个级别做各种脏查询,有没有更好的办法?

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


【解决方案1】:

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

【讨论】:

  • 优秀。这怎么没有记录?
【解决方案2】:

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

您可能希望通过链接过滤来废弃对 isFull 属性的需求,类似于

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

【讨论】:

    猜你喜欢
    • 2011-06-07
    • 2012-12-28
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多