これはGoogle App Engineのndbに関するものです。私の所見によると、キーを提供せずにエンティティを作成すると、Datastore Viewerに表示されているID
フィールドにエンティティの整数が1から始まりインクリメンタルになります。しかし、idとして文字列を指定してエンティティを作成すると、エンティティの文字列はKey Name
フィールドになります。たとえば、次のようにGoogle App Engineのndb:IDまたはキー名を使用していますか?
モデル:
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)では、member1には次の2つのステートメントのどれも動作しません:
しかし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)を指定して作成したエンティティには問題はありません。しかし、同じことはメンバー1にとっては機能しません。私の質問:a)私の観察は正しいのですか? b)get_by_id()
を使用してmember1を取得するにはどうすればよいですか?
あなたはすべてのメンバーをフェッチし、その鍵を検討してきましたあなたが実際にmember1とmember2を書いたことを知っていますか? と –
2.あなたが実際に作成したキー –