观点:
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
?
谢谢!
答案 0 :(得分: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))