Google App Engineでエンティティのidを自前で振る
Google App Engineのエンティティはput()でセーブしたタイミングでidが振られます。
from google.appengine.ext import db #モデル定義 class SomeModel(db.Model): pass sm = SomeModel() sm.put() #ここでsm.key().id()が振られる
keyの名前をユニコード文字列で振ることもできるようです。
sm1 = SomeModel(key_name="something") sm1.put() #ここでsm1.key().name()が振られる
とします。このときはidは振られません。
idを決めて登録するには先にkeyを作ってしまえばOKでした。
id = 10L key2 = db.Key().from_path(SomeModel.kind(), id) sm2 = SomeModel(key=key2) sm2.put()
ただし、自前でidを振ってしまうと、ストアに入っているkeyと重複する恐れがあるので、
テストやデータリストア以外ではやらない方がいいと思います。