4

NDB からエンティティを読み取るために get_by_id() を使用していますが、エンティティ グループの一部であるエンティティに対しては機能しません。

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 からの親を持つフォルダーはどうすればよいですか?

4

1 に答える 1

8

get_by_id(id, parent=None)親パラメーターを取ります。
エンティティ グループで ID を使用してクエリを実行する場合、必要なエンティティを取得できるようにするには、親キーを含める必要があります。

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

于 2012-06-15T13:11:21.307 に答える