金字塔:如何获取刚刚创建的db行的id?

Vit*_*mar 4 python sqlalchemy pyramid

在视图中:

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

return HTTPFound(location='/ads/%s/%s' % (model.id, model.title))
Run Code Online (Sandbox Code Playgroud)

因此,它必须将我重定向到/ads/1/some_title(如果id = 1),而是将其重定向到/ads/None/some_title.

如何id在此特定示例中创建db行之后获取此行?

谢谢!

Sin*_*ion 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))
Run Code Online (Sandbox Code Playgroud)