libro
www.tuyano.com
PythonによるGoogle App Engine(GAE)プログラミング入門

データストアによるデータベースの利用 (5/6)

作成:2010-01-03 15:15
更新:2010-05-10 21:29

■「キー」とエンティティの検索

多数のエンティティを保存し管理するとなると、考えなければならないのが「どうやって個々のエンティティを正しく識別するか」です。

例えば、不要なデータを削除したり、データを修正したりする場合でも、操作する対象のエンティティを正しく取り出すことができなければいけません。こうした場合に重要となるのが、エンティティに用意されている「キー(Key)」です。

キーは、エンティティを作成すると自動的に設定される特殊な情報です。これは、モデルクラスの「key()」という引数なしのメソッドを呼び出すことで取り出すことができます。

キーには、すべてのエンティティでユニークなID番号が格納されており、これは「id()」というKeyクラスのメソッドを呼び出すことで取得できます。

エンティティを扱う場合には、まずキーやキーのID番号を使って操作する対象のエンティティを取り出し、それから操作を行います。

では、実際にキーとIDを使ってみましょう。先ほどのサンプルで、「ID番号を入力してエンティティを検索する」というページを作ってみます。

まず、先ほどのhome.htmlのボディ部分を如何のような形に修正しましょう。今回は一覧表示の部分に、{{data.key.id}}という項目を追加しました。これにより、各エンティティのID番号を表示するようにします。

また、フォームを修正し、ID番号を送信するようにしました。これをコントローラー側で受け取り、そのID番号のエンティティを取り出し表示させるわけです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

	<body>
		<h1>Home Page</h1>
		<p>{{message}}</p>
		<form method="post" action="/">
		<table>
			<tr>
			<th>ID:</th>
			<td><input type="text" name="id" /></td>
			</tr>
			<tr><th></th>
			<td><input type="submit" value="送信" /></td></tr>
		</table>
		</form>
		<hr />
		<table border="1" width="500px">
		<tr>
		<th width="50px">ID</th>
		<th width="300px">メッセージ</th>
		<th width="150px">送信者</th>
		</tr>
		{% for data in datas %}
		<tr>
		<td>{{data.key.id}}</td>
		<td>{{data.message}}<br />
		({{data.time}})</td>
		<td>{{data.name}}</td>
		</tr>
		{% endfor %}
		</table>
	</body>
※関連コンテンツ

「PythonによるGoogle App Engine(GAE)プログラミング入門」に戻る