0

Python 2.7 アプリ エンジン 1.8.5.1039

私の人生では、InventoryItem Expando モデルが None を返している理由がわかりません。私のIDは有効です。思い出すよりも何度もデータストアをチェックしました。Expando モデルを正しく動作させるには、親を渡す必要がありますか?

class InventoryItem(db.Expando):
    def toDict(self):
        d = db.to_dict(self)
        d['id'] = self.key().id()
        return d

inventoryItem = InventoryItem(parent=toon.getInventory())
for k,v in item.iteritems():
    setattr(inventoryItem,k,v)
    inventoryItem.put()

inventoryItem_id = self.request.get("id")
        logging.info(inventoryItem_id)#5770237022568448
        item = InventoryItem.get_by_id(long(inventoryItem_id))#returns None
4

1 に答える 1

2

エンティティを作成するときに親を提供しているため、 get_by_id への呼び出しには親を提供する必要があります。 InventoryItem(parent=toon.getInventory())

の通話ドキュメントを参照してくださいget_by_id(id, parent=None, app=None, namespace=None, **ctx_options)

また、親の使用が appengine を使用する上で非常に基本的なことを意味することをよく理解するために、キーのしくみに関するドキュメントを読んでおくことをお勧めします。

于 2013-10-10T10:42:43.253 に答える