4

このページ: https://developers.google.com/appengine/docs/python/datastore/keyclass#Key_from_path

この部分:

Key.from_path(kind, id_or_name, parent=none, namespace=None, **kwds) 1 つ以上のエンティティ キーの祖先パスから新しい Key オブジェクトを構築します。

パスは、エンティティの親子関係の階層を表します。パス内の各エンティティは、エンティティの種類と、その数値 ID またはキー名のいずれかで表されます。フル パスは、パスの最後に表示されるエンティティを表し、その祖先 (親) が前のエンティティになります。

たとえば、次の呼び出しは、種類が Address で数値 ID が 9876 のエンティティのキ​​ーを作成します。このエンティティの親は、名前付きキー 'Boris' を持つ種類が User のエンティティです。

k = Key.from_path('ユーザー', 'ボリス', 'アドレス', 9876)

パスの詳細については、「キーとエンティティ グループ」を参照してください。

関数呼び出しと説明はここでは意味がありません.Addressが「種類の」引数である場合、最初に行くべきですか?? そして、ID 9876 が 2 番目に表示されますか? なんで3位と4位なの?
そして、「親」は 3 番目のパラメーターです。ここに 2 つの「親」引数 (kind 'User' と name 'Boris') があり、それらが引数リストの 1 番目と 2 番目にあるのはなぜですか?

4

2 に答える 2

2

AppEngine のキーは階層的です。完全なキーを取得するには、すべての祖先情報を渡す必要があります。

この例の場合、User と Address の 2 つのオブジェクト タイプがあり、User は Address の親です。from_path への呼び出しは、最初に、ID が Boris であるオブジェクト タイプ User を提供します (ID は、文字列名または整数 ID にすることができます)。このオブジェクトには、ID が 9876 である Address タイプの子オブジェクトがあります。

于 2012-05-20T13:45:58.483 に答える
2

Gae ソース コードから、クラスのfrom_path静的メソッドのシグネチャは次のとおりです。Key

def from_path(*args, **kwds):

次の形式でゼロ以外の偶数の位置引数を受け入れます(kind, id or name, kind, id or name, etc. etc.)

if not args or len(args) % 2:
  raise datastore_errors.BadArgumentError(
      'A non-zero even number of positional arguments is required '
      '(kind, id or name, kind, id or name, ...); received %s' % repr(args))

ドキュメントに記載されているように、フル パスはパスの最後に表示されるエンティティを表し、その先祖 (親) が先行するエンティティです。

したがって、例は正しいようです。作成されたキーは、Boris が.idkey name

于 2012-05-20T14:18:19.830 に答える