Google App Engine の ndb についてです。私の観察によると、キーを指定せずにエンティティを作成すると、ID
Datastore Viewer に示されているように、エンティティのフィールドには 1 から始まり増分する整数が含まれます。ただし、id として文字列を指定してエンティティを作成すると、エンティティのKey Name
フィールドに文字列が含まれます。例えば:
モデル:
class Member(ndb.Model):
...
プログラム:
member1 = Member() # --> ID is 1, Key Name is None
member2 = Member(id='abc') # --> ID is empty, Key Name is 'abc'
さらに、htmlファイルで、私が使用する場合
<input ... name="id" value={{member1.key.id}} ... />
サーバー側プログラム (Python) に返すパラメーターとして、次の 2 つのステートメントのいずれも member1 に対して機能しません。
Member.get_by_id(self.request.get('id'))
member1 = Member.get_by_id(int(self.request.get('id')))
ただし、次の html およびプログラム コード:
<input ... name="id" value={{member2.key.id}} ... />
member2 = Member.get_by_id(self.request.get('id'))
member2 で機能します。
文字列 ID (つまり、member2) を指定して作成されたエンティティには問題がないようです。しかし、同じことは member1 では機能しません。私の質問: a) 私の観察は正しいですか? b) を使用して member1 を取得するにはどうすればよいget_by_id()
ですか?