Пирамида: как получить идентификатор только что созданной строки БД? - PullRequest
4 голосов
/ 07 января 2012

В просмотрах:

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 этой строки после созданной строки БД в этом конкретном примере?

Спасибо!

1 Ответ

11 голосов
/ 08 января 2012

в точке, которую вы запрашиваете model.id, новая модель еще не достигла базы данных;pyramid ждет, пока обработчик запроса не вернется, прежде чем совершить ожидающую транзакциюЧтобы получить идентификатор раньше, вы должны очистить сессию.Добавить:

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

<em><strong>session.flush()</strong></em>
return HTTPFound(location='/ads/%s/%s' % (model.id, model.title))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...