class X(ndb.Model):
content = ndb.StringProperty()
number = ndb.IntegerProperty()
class P(ndb.Model):
unit = ndb.StructuredProperty(X, repeated=True)
使用数据存储区查看器,我可以看到以下存储的数据:
Entity Kind P
Entity Key ag1kZXZ-bGlmZXN3YWxschoLEg1BZHZlcnRpc2VtZW50IGCAgICA4NcKDA
ID 6015428115566296
unit.content (list) [u'Apple', u'Coca Cola', u'Orange', u'Audi']
unit.number (list) [10L, 5L, 10L, 10L]
目标:访问不同的unit.content值(例如,'Apple'等)
[我是GAE Python的新手;如果问题太愚蠢,请原谅]
我的(不成功)尝试[我尝试了其他一些方法但是徒劳]:
unitv_query = P.query()
mv = unitv_query.fetch()
for a in mv.unit:
logging.info ("content=[%s]", a.content)
我收到以下错误:
::
File "C:\learn\eg5.py", line 495, in render_unit
for a in mv.unit:
AttributeError: 'list' object has no attribute 'unit'
感谢任何帮助
答案 0 :(得分:3)
unit
属性将是X's
的列表,但是您正在循环错误的事情
你应该是,
unitv_query = P.query()
mv = unitv_query.fetch()
# mv is a list of P
for a in mv:
# now loop over each entity in unit property.
for i in a.unit:
logging.info ("content=[%s]", i.content)
在您的代码中,您尝试从mv
访问单位,但mv是P
个实体的列表 - 查询结果,因此您无法访问unit