Прежде всего, я сделал домашнее задание и попытался найти похожий вопрос :).Последние пару часов я пробовал, но безрезультатно.
То, что я пытаюсь сделать, кажется очень простым.У меня есть несколько форм в Formwizard.В первой форме у меня есть текстовый ввод.На следующем шаге у меня есть FormSet (но это также может быть простая форма), который содержит формы. Выбор (выпадающий).Я хочу показать значение ввода текста в этом раскрывающемся списке.Однако я просто не могу заставить его работать.Это мой код:
In Forms.py:
class FirstForm(forms.Form):
first_point = forms.CharField(
widget=forms.TextInput(
attrs={
'class' : 'form-control'
}))
class SecondStepForm(forms.Form):
dropdown_select = forms.ChoiceField(
widget=forms.Select(
attrs={'class' : 'form-control'
}))
SecondStepFormSet = formset_factory(SecondStepForm, extra=5)
In views.py:
FORMS = [("firstform", FirstForm),
("secondform", SecondStepFormSet)]
class FormWizardView(LoginRequiredMixin, SessionWizardView):
template_name = 'test.html'
def get_context_data(self, form, **kwargs):
context = super(FormWizardView, self).get_context_data(form=form, **kwargs)
if self.steps.current == 'secondform':
data_temp = self.get_cleaned_data_for_step('firstform')
data = data_temp['first_point']
print(data)
context.update({'dropdown_select': data})
return context
def done(self, form_list, **kwargs):
return None
И в моем html-файле:
{% block content %}
<div class="row">
<div class="col-md-12">
<form action="" method="post">{% csrf_token %}
<table>
{{ wizard.management_form }}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
{% for form in wizard.form.forms %}
<div>
{{ form.dropdown_select }}
</div>
{% endfor %}
{% else %}
{% for field in wizard.form %}
{{field}}
{% endfor %}
{% endif %}
</table>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}"
class="btn btn-danger btn-sm"
style="width:30%; float:left;">{% trans "Previous" %}</button>
{% endif %}
<input type="submit" value="{% trans "Next" %}"
class="btn btn-danger btn-sm"
style="width:30%; float:right;"/>
</form>
</div>
</div>
{% endblock %}
Оператор print(data)
в views.py печатает значение из текстового ввода.А также, когда я меняю {{ form.dropdown_select }}
на {{ dropdown_select }}
, значение в моем шаблоне меняется на значение моего ввода текста.Так что все идет хорошо.Я просто не могу заставить его заполнить выпадающий список.
Есть идеи как это сделать?Надеюсь, Stackoverflow поможет мне еще раз (как это всегда бывает :)).Большое спасибо!