Как получить доступ ко всем повторяющимся структурированным свойствам в GAE ndb Python

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'

Любая помощь приветствуется


person gsinha    schedule 07.11.2013    source источник


Ответы (1)


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

person Tim Hoffman    schedule 07.11.2013
comment
Большое спасибо .. у меня есть еще одно сомнение: как запросить все такие элементы ('content'), для которых значение 'number' больше 2 - person gsinha; 07.11.2013
comment
Вы читали документы developers.google.com/appengine/docs/python? / ndb / и попробовал такой запрос. Я не могу привести вам пример, так как мне не нужно тестировать повторяющееся свойство StructuredProperty. - person Tim Hoffman; 07.11.2013