Генерация форм на основе выбора пользователя в Django
Я работаю над проектом Django, целью которого является предоставление пользователю возможности заполнять некоторые формы. В некоторых из этих форм пользователь должен сделать выбор между несколькими вариантами, и на основе сделанного выбора должна быть сгенерирована определенная форма. В конце всех этих форм введенные данные должны быть использованы для создания pdf файла.
Что касается функциональности, связанной с генерацией pdf, то для целей вопроса меня интересует использование данных, введенных в одном представлении, в другом представлении, используя их в качестве контекста.
Вот что я пытался сделать.
Сначала я создал несколько форм в файле forms.py:
class ChoiceForm(forms.Form):
CHOICES = [
('1', 'Choice-One'),
('2', 'Choice Two'),
]
choice = forms.ChoiceField(choices=CHOICES)
class ChoiceOneForm(forms.Form):
name_one = forms.CharField(max_length=200)
class ChoiceTwoForm(forms.Form):
name_two = forms.CharField(max_length=200)
Затем я создал это представление в файле views.py:
def contact(request):
if request.method == 'POST':
num_people = int(request.POST.get('num_people'))
people_formset = [forms.ChoiceForm() for i in range(num_people)]
return render(request, 'home.html', {'people_formset': people_formset})
else:
return render(request, 'home.html')
def generate_pdf(request):
context = {}
return render(request, 'pdf.html', context)
И, наконец, у меня есть этот HTML файл под названием 'home.html':
<h1>Contact</h1>
<form method="post">
{% csrf_token %}
People number: <input type="number" name="num_people" required>
<input type="submit" value="Submit">
</form>
{% if people_formset %}
{% for form in people_formset %}
<form>
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
{% endfor %}
{% endif %}
Что мне удалось достичь на данный момент, так это создать столько полей "выбора", сколько значений числа, введенного в поле 'num_people'.
Что мне не хватает:
1. Возможность создать для каждого поля 'choiche' в наборе форм форму ChoiceOneForm или ChoicheTwoForm на основе выбора, сделанного в поле 'choice';
1.2. Возможность использовать все эти данные в представлении 'generate_pdf' (пока что меня интересует возможность включить эти данные в контекст этого представления).