dkoldyaev
@dkoldyaev
Отличный парень!

Как вывести первый шаг django.formtool.wizard на всех страницах сайта?

На сайте присутствует форма бронирования. Разбита на три этапа.

У меня определен визард
class OrderWizard(SessionWizardView):
    template_name = 'order/form.html'
    form_list = [OrderForm1, OrderForm2, OrderForm3]

При использовании его метода as_view() все хорошо. Все три шага проходят нормально.
Теперь я хочу вынести первый шаг на все страницы сайта. Чтобы пользователь мог заполнить первую часть с любой страницы, и уже затем попасть на сразу на вторую страницу формы.

Для этого я передаю визард в контекст-процессор
def left_order_form(request):

    if request.path != reverse('excursion_order') :
        wizard = OrderWizard()
    else :
        wizard = None

    return {
        'left_col_wizard':  wizard
    }

и пытаюсь в шаблоне получить
{{ left_col_wizard.form }}
Но эта переменная пуста.

Как мне реализовать задуманное?
  • Вопрос задан
  • 2291 просмотр
Решения вопроса 1
dkoldyaev
@dkoldyaev Автор вопроса
Отличный парень!
Вместо того, чтобы передавать класс, необходимо было сгенерировать TemplateResponse, и уже из него выбирать объект визарда. Спасибо Ростислав Григорьев за решение!

def left_order_form(request):

    if request.path != reverse('excursion_order') :
        wizard = OrderWizard.as_view()(request).context_data['wizard']
    else :
        wizard = None

    return {
        'left_col_wizard':  wizard
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы