1
class X(ndb.Model): 
    content = ndb.StringProperty() 
    number = ndb.IntegerProperty() 

class P(ndb.Model): 
    unit = ndb.StructuredProperty(X, repeated=True) 

使用 Datastore 查看器,我可以看到以下存储的数据:

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'

任何帮助表示赞赏

4

1 回答 1

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

于 2013-11-07T07:23:11.210 回答