2012-01-07 117 views
4

在訪問量:金字塔:如何獲取剛剛創建的數據庫行的ID?

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

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

所以,它必須重定向我/ads/1/some_title(如果ID = 1),而不是將其重定向我/ads/None/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)) 
相關問題