我有一个 ndb 模型,它有一个列出多个值的 ComputedProperty。
sku_name = ndb.ComputedProperty(lambda self: makekeys(self.sku, self.name), indexed=True, repeated=True)
makekeys 创建两个参数的列表,所以没什么特别的。
执行以下操作:
query = cls.query()
data = query.fetch(projection=[Pricelist.sku_name])
for d in data:
logging.info(d.sku_name)
仅获取 d.sku_name 中的第一个值,而不是 ComputedProperty 列表的所有值。
# result with projection
[u'0300022']
在没有投影的情况下做同样的事情 sku_name 的所有值都可以作为列表使用。
# result without projection but the full data record
[u'0300022', u'sbrpgznplus100']
我究竟做错了什么?
从文档https://cloud.google.com/appengine/docs/standard/python/ndb/projectionqueries:
投影具有多个值的属性不会填充该属性的所有值。相反,将为匹配查询的每个唯一的投影值组合返回一个单独的实体。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句