Передача объектов в другой шаблон без предварительного сохранения - PullRequest
2 голосов
/ 25 мая 2011

Есть ли способ передать вновь созданный объект (еще не сохраненный) на другую страницу?

В настоящее время мне нужно сохранить объект A на странице A, прежде чем перейти к странице B. После сохранения объекта A я могу получить идентификатор объекта A и получить всю информацию о новом объекте A из базы данных, и это поможет в создании объекта B в шаблоне B.

Проблема в том, что я думал, что если пользователь решит отменить операции на странице B? К тому времени, когда он решит не создавать объект B на странице B, объект A уже создан в соответствии с вышеописанным сценарием, чего я не хочу, чтобы это произошло. Весь процесс должен создавать оба объекта, а не только одну модель. Даже если я удаляю предыдущий объект A, это нарушит приращение идентификатора таблицы A. Может быть, выполнение автоматического приращения сброса поможет, но я не думаю, что это рекомендуется.

Я не думаю, что смогу передать объекты Queryset (не сохраненные) на страницу шаблона B, потому что это путает меня с многочисленными if request.method == POST в одном виде определения и, чтобы противостоять этому, чтобы перейти на страницу шаблона B, я использовал другой URL (представление diff def) вместо предоставления другого шаблона в том же определении.

Почему мне нужно перейти на другую страницу / представление для создания объекта B вместо отображения всех полей в объекте A и объекте B на одной странице, потому что поля объекта B будут различаться и зависят от того, чем является объект A. (Не планирует использовать динамические страницы)

Надеюсь, я никого не путаю. Я предоставлю более подробную информацию, если это необходимо. Благодарю.

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Одним из возможных способов является использование сессий

Допустим, ваше определение модели выглядит следующим образом ...

class MyClass(Model):
    ...
    ...

Возможно, вы используете

rec = MyClass(params...)

вместо

rec = MyClass.objects.create(...)

итак, после создания экземпляра (с сохранением или без сохранения в базе данных) его можно сохранить в сеанс

request.session['somedata'] = rec

И когда ты хочешь получить

request.session.get('somedata')
1 голос
/ 25 мая 2011

Похоже, мастер форм django - это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...