Pyramid:如何获取刚刚创建的数据库行的ID?

发布于 2024-12-25 05:27:39 字数 330 浏览 0 评论 0原文

在视图中:

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

在此特定示例中创建数据库行后,如何获取该行的id

谢谢!

In views:

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

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

So, it must redirects me to /ads/1/some_title (if id=1), instead it redirects me to /ads/None/some_title.

How to get an id of this row after created db row in this particular example?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅笑依然 2025-01-01 05:27:39

当您请求 model.id 时,新模型尚未到达数据库;金字塔会等到请求处理程序返回后再提交挂起的事务。为了更早地获取 id,您必须刷新会话。添加:

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

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

at the point you ask for model.id, the new model has not yet reached the database; pyramid waits until the request handler returns before commiting the pending transaction. To get the id earlier, you must flush the session. Add:

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

session.flush()
return HTTPFound(location='/ads/%s/%s' % (model.id, model.title))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文