NDB在重复的StringProperty中查询空字符串

时间:2015-09-15 18:50:27

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

我有ndb模式,它有String重复属性。我正在尝试检索所有具有空值的实体。但NDB查询返回空。

class A(ndb.model):
    name = ndb.StringProperty()
    values = ndb.StringProperty(repeated=True)

a1 = A()
a1.name = "T1"
a1.values = ['V1', 'V2']
a1.put()

a2 = A()
a2.name = "T2"
a2.values = []
a2.put()

result = A.query(A.values=="") # Return empty
result = A.query(A.values==[]) # BadValueError: Expected string, got []

for each in result:
  print each.name

如何查询空/无值的实体?

1 个答案:

答案 0 :(得分:2)

我认为您必须将查询基于另一个包含值数的字段,例如,

num_values = ndb.IntegerProperty(indexed=True)

每次更新value字段时,您都必须更新此号码。然后你可以像这样查询:

result = A.query(A.num_values==0)

这类似于另一个问题:NDB: Sort query results