嗨,我有这些模特:
class TagProprieta(ndb.Model):
tag = ndb.StringProperty()
stato = ndb.StringProperty()
class RegDevice(ndb.Model):
comune_key = ndb.KeyProperty()
reg_id = ndb.StringProperty()
tags = ndb.StructuredProperty(TagProprieta, repeated=True)
....
此查询返回预期结果(包含一些RegDevice对象的列表):
registration_ids = models.RegDevice.query(\
models.RegDevice.comune_key==comune_key,\
models.RegDevice.tags == models.TagProprieta(tag=tag, stato='1')\
).fetch()
因为我只需要字段reg_id,所以我改变了最后一行:
.fetch(projection=[models.RegDevice.reg_id])
结果是一个空列表:[]
如果由于NDB的限制,我会非常好并且错误,但在我看来,空列表不是正确的。 我做错了吗?我是唯一使用前一个查询的机会,然后在内存中处理结果吗? THX
答案 0 :(得分:2)
必须为reg_id
编制索引,才能使投影正常工作。
尝试在index.yaml
- kind: RegDevice
properties:
- name: reg_id
答案 1 :(得分:0)
试试这个:
registration_ids = models.RegDevice.query(\
models.RegDevice.comune_key==comune_key,\
models.RegDevice.tags == models.TagProprieta(tag=tag, stato='1'),\
projection=[models.RegDevice.reg_id]
).fetch()