Генерация форм на основе выбора пользователя в 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' (пока что меня интересует возможность включить эти данные в контекст этого представления).

Вернуться на верх