1

GAE インタラクティブ コンソール (/_ah/admin/interactive) で次のコードを実行していますが、親が指定されていない場合に get_by_id() が None を返す理由がわかりません。ドキュメントはこの制限を明確にしておらず、強制する理由が思いつきません。

import my_model
print my_model.all().fetch(1)[0].key().id()  # Returns 33006, used later
print my_model.get_by_id(33006)
print my_model.get_by_id(my_model.all().fetch(1)[0].key().id())

parent = my_model.all().fetch(1)[0].parent()
print my_model.get_by_id(33006, parent=parent)

出力:

33006
None
None
<my_model object at 0x109a6a690>

祖先を使用したオブジェクトの作成を示す db.Model 定義とコード:

class my_model(db.Model):
    user_id = db.StringProperty(indexed=True)
    email = db.StringProperty(indexed=True, default=None)

    def create(parent):
        obj = my_model(user_id='x', email='y', parent=parent)
        obj.put()
4

1 に答える 1

3

あなたの質問への答えは次のとおりです。同じ ID が別のエンティティにある可能性がありますが、親が異なるためです。

親が同じ場合、または親を持たないすべてのエンティティの場合、ID はすべて異なりますが、祖先が存在する場合、数値 ID は一意ではありません。

于 2013-03-05T20:28:02.987 に答える