【问题标题】:GAE filter by missing repeated property通过缺少重复属性进行 GAE 过滤器
【发布时间】:2015-01-19 17:55:31
【问题描述】:

我正在尝试查询对给定重复属性没有值的所有对象。

例如,假设您有以下模型:

class Foo(ndb.Model):
    bar = ndb.IntegerProperty(repeated=True)

并且您想要所有 Foo 的实例,其中 bar 没有值,或者是 []。您将如何执行此查询或解决此问题?

注意(来自 GAE 的 ndb 文档):

在重复属性上查询 None 的值未定义 行为;不要那样做

【问题讨论】:

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


    【解决方案1】:

    嗯,就像文档说的那样,你不能。

    解决此问题的一种方法可能是在模型上保留另一个属性,该属性记录它在 bar 中有多少值。您需要在保存实体时更新它:一个好方法是在调用超类方法之前覆盖 put() 以执行 self.bar_count = len(self.bars)

    当然,您需要通过现有数据来设置计数;您可能想使用mapper 来做到这一点。

    【讨论】:

    • 听起来像bar_count 应该是ComputedProperty 以简化应用程序代码(以便动态计算在put 自动发生,无需覆盖)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    相关资源
    最近更新 更多