I did. The following is an example snippet.
from django.shortcuts import render
from django.views import View
from .forms import ExampleFormSet
class ExampleView(View):
def get(self, request, *args, **kwargs):
data = { 'form-TOTAL_FORMS': '3', 'form-INITIAL_FORMS': '0', }
example_form = ExampleFormSet(data)
context = { "example_form": example_form }
if request.session.get("saved_data") is not None:
print(request.session.get("saved_data"))
example_form = ExampleFormSet(initial=request.session.get("saved_data"))
context = { "example_form": example_form }
return render(request, "base/main.html", context)
return render(request, "base/main.html", context)
def post(self, request, *args, **kwargs):
data = { 'form-TOTAL_FORMS': '3', 'form-INITIAL_FORMS': '0', }
example_form = ExampleFormSet(request.POST)
if example_form.is_valid():
request.session["saved_data"] = example_form.cleaned_data
context = { "example_form": example_form }
return render(request, "base/main.html", context)
forms.py
from django import forms
from django.forms import formset_factory, BaseFormSet
class ExampleForm(forms.Form):
sample_field = forms.FloatField(
widget = forms.TextInput(attrs = { "required": "required" })
)
ExampleFormSet = formset_factory(ExampleForm, extra=3)
This however, causes 3 more fields to appear on every GET
request to the ExampleView