Кто-нибудь, кто работал с интеграцией Django форм-инструментов с Dynami c Formsets? У меня есть 7 форм в мастере форм, и в одной из форм я пытаюсь добавить / удалить столько вопросов, сколько я могу динамически. Однако когда я отправляю мастер, сохраняется только один из вопросов (последний ввод текста) независимо от того, сколько я добавил. Ниже мое окно мастера
class JobWizard(SessionWizardView):
form_list=[JobForm7FormSet,JobForm1,JobForm2,JobForm3, JobForm4,JobForm5,JobForm6 ]
file_storage= FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'jobs'))
template_name="jobs/jobforms.html"
def get_template_names(self):
return [TEMPLATES[self.steps.current]]
def done(self, form_list, form_dict, **kwargs):
form_dict = self.get_all_cleaned_data()
categories = form_dict.pop('categories')
sub_categories = form_dict.pop('sub_categories')
# job_question=form_dict.pop('formset-0', None)
# print(job_question1)
print("_________________________")
job_question = form_dict.pop('job_question')
job=Job.objects.create(**form_dict)
job.categories=categories
job.job_question=job_question
print("_________________________")
for sub_category in sub_categories:
job.sub_categories.add(sub_category)
# for question in job_question:
# job.job_question.append(question)
job.save()
return redirect('job_list')
А мой файл forms.py такой, как показано ниже. Я использую формы модели и создаю набор форм из формы модели.
class JobForm7(forms.ModelForm):
class Meta:
model = Job
fields = ['job_question']
JobForm7FormSet = modelformset_factory(Job,extra=1,max_num=10, fields=('job_question',), form=JobForm7)
Рендеринг в моем шаблоне, как показано ниже:
{% block content %}
<p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>
<form action="" method="post" enctype="multipart/form-data" id="job-question">{% csrf_token %}
<table>
{{ wizard.management_form }}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
{% for form in wizard.form.forms %}
{{ form |crispy }}
{% endfor %}
{% else %}
{{ wizard.form }}
{% endif %}
</table>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "first step" %}</button>
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "prev step" %}</button>
{% endif %}
<input type="submit" value="{% trans "submit" %}"/>
</form>
<script type="text/javascript" src="{% static 'js/jquery-min.3.4.1.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jquery.formset.js' %}"></script>
<script type="text/javascript">
$(function() {
$('#job-question table tr').formset();
})
</script>
{% endblock %}
Кто-нибудь с какой-нибудь идеи? Когда я передаю набор форм в список форм, он отображает все дополнительные поля вместо одного поля и позволяет динамически добавлять другие. Форма в мастере отображается сначала, как показано ниже:
Затем выглядит как показано ниже после добавления нескольких полей вопроса: