2012-01-07 11 views
4

:(idは= 1場合)、代わりにそれは/ads/None/some_titleに私をリダイレクトピラミッド:ちょうど作成されたdb行のIDを取得するには?ビューで

model = Model('some_title', 'some text') 
session.add(model) 

return HTTPFound(location='/ads/%s/%s' % (model.id, model.title)) 

だから、それは/ads/1/some_titleに私をリダイレクトする必要があります。

この特定の例では、作成されたdb行の後にこの行のidを取得する方法はありますか?

ありがとうございます!

答えて

11

model.idを求める時点で、新しいモデルはまだデータベースに到達していません。ピラミッドは、保留中のトランザクションをコミットする前に要求ハンドラが戻るまで待機します。 idを先に取得するには、セッションをフラッシュする必要があります。追加:

model = Model('some_title', 'some text') 
session.add(model) 

session.flush() 
return HTTPFound(location='/ads/%s/%s' % (model.id, model.title)) 
関連する問題