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

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

Используя зритель Датастор, я мог видеть следующую хранимые данные:Как получить доступ ко всем неоднократным структурированным свойствам в GAE Python Ndb

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; поэтому, пожалуйста, простите, если вопрос слишком глупый]

My (неудачная) попытка [я попробовал несколько других способов, но напрасно]:

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' 

Любая помощь с благодарностью

ответ

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 однако мв список P сущностей - результат запроса, и поэтому вы не можете получить доступ к unit

+0

Спасибо большое. У меня есть еще одно сомнение: Как запросить для всех таких элементов («контент»), для которых значение «номер» больше 2 – gsinha

+0

Вы читали документы https://developers.google.com/appengine/ docs/python/ndb/queries # filtering_structured_properties и попробовал такой запрос. Я не могу привести вам пример, поскольку у меня нет повторного StructuredProperty для тестирования. –

Смежные вопросы