Перейти к определенному шагу в мастере форм

Можно ли добавить кнопку в форму FormWizard, которая может направить пользователя на определенный шаг в мастере?

Я, конечно, могу заставить их вернуться или начать заново, но я хотел бы иметь возможность предложить возможность перейти к определенному шагу и изменить свои записи.


person bodger    schedule 06.01.2016    source источник


Ответы (1)


Да, это возможно. Самый простой способ — использовать NamedUrlWizardView.

Если вы используете простой WizardView, вы необходимо отправить параметр wizard_goto_step со значением, равным имени шага.

Допустим, у вас есть WizardView с такими шагами, как следующий

class OrderWizardView(SessionWizardView):
    form_list = (
        ('select_customer', forms.WizardCustomerForm),
        ('products', forms.WizardProductFormset),
        ('order', forms.WizardOrderForm),
        ('customer', forms.WizardCustomerDetailsForm),
        ('review', forms.WizardReviewForm),
    )

Для предыдущего/первого шага вы можете использовать переменные шаблона {{ wizard.steps.prev }} и {{ wizard.steps.first }}.

<button name="wizard_goto_step" value="{{ wizard.steps.first }}">First Step</button>
<button name="wizard_goto_step" value="{{ wizard.steps.prev }}">Prev Step</button>

Если вам нужен конкретный шаг - используйте его название!

<button name="wizard_goto_step" value="select_customer">Select customer</button>
<button name="wizard_goto_step" value="products">Add products</button>
...
<button name="wizard_goto_step" value="review">Review</button>
person Vadym    schedule 26.08.2017
comment
Как я могу использовать его с тегом ‹a›? - person Wai Kyaw; 13.04.2021
comment
проверьте документы для NamedUrlWizardView.get_step_url django-formtools. readthedocs.io/en/latest/ - person Vadym; 13.04.2021