id は、key_name を与えないでモデルのインスタンスを作った時にだけ割り振られる long integer の通し番号のこと。
get_by_key_name の代わりに get_by_id がある。get_or_insert では key_name が渡せるのに id は渡せない。
ユーザーにページを見せて何か操作させる時などは、key_name よりも id を hidden input に入れておいたほうがいい。
↑こうやって自分は id と key_name を使いわけてるけど、違うという人もいるのかな?
— Google App Engineのkey, id, name, kind, path, entity groupなどについてのまとめ - Pythonで遊ぶよ - pythonグループ