NDB:查询未设置的属性?

时间:2014-07-08 18:43:28

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

我已经在生产中收集了一些数据,比如说,以下模型:

class Tags(ndb.Model):
    dt_added = ndb.DateTimeProperty(auto_now_add=True)
    s_name   = ndb.StringProperty(required=True, indexed=True)

想象一下,我现在为模型添加一个新属性:

class Foo(ndb.Model):
    is_valid = ndb.BooleanProperty(default=False)
    some_key = ndb.KeyProperty(repeated=True)

class Tags(ndb.Model):
    dt_added = ndb.DateTimeProperty(auto_now_add=True)
    name     = ndb.StringProperty(required=True, indexed=True)
    new_prop = ndb.StructuredProperty(Foo)

...并使用这个新模型收集更多数据。

所以现在我有一部分数据设置了属性new_prop,另一部分没有设置。

我的问题是:如何使用新属性new_prop未设置查询数据?

我试过了:

query_tags = Tags.query(Tags.new_prop == None).fetch()

但似乎没有设置该属性的数据...任何建议? 谢谢!

1 个答案:

答案 0 :(得分:6)

数据存储区分不具有属性的实体和拥有具有空值的属性的实体(无)。

  

无法查询特定缺少给定属性的实体。另一种方法是定义一个默认值为None的固定(建模)属性,然后过滤为None的实体作为该属性的值。