НБР: как получить идентификатор сущности в сущность группы


Я использую get_by_id() для чтения сущностей из NDB, и я не могу заставить его работать для сущностей, которые являются частью группы сущностей:

from google.appengine.ext import ndb

class Folder(ndb.Model):
    name = ndb.StringProperty()

parent_folder_key = Folder(name = 'Parent folder').put()    
sub_folder_key = Folder(name = 'Subfolder', parent=parent_folder_key).put() 

id_list = []
print 'All folders:'
for f in Folder.query():
  print f
  id_list.append(f.key.id())

print 'nFolders by id:'
for id in id_list:
  print Folder.get_by_id(id)

Вывод:

All folders:
Folder(key=Key('Folder', 5814), name=u'Parent folder')
Folder(key=Key('Folder', 5814, 'Folder', 5815), name=u'Subfolder')

Folders by id:
Folder(key=Key('Folder', 5814), name=u'Parent folder')
None

Это по замыслу или это ошибка? Я видел, что были некоторые проблемы, связанные с get_by_id () при использовании пространств имен ранее (я использую SDK 1.6.6). Как я могу папки, которые имеют родителей из id?

1 4

1 ответ:

get_by_id(id, parent=None) принимает родительский параметр.
при запросе по идентификатору в группе сущностей необходимо включить родительский ключ, чтобы получить нужную сущность.

Https://developers.google.com/appengine/docs/python/ndb/modelclass#Model_get_by_id