hi i am using formtools to submit a multistep form. The problem is that I haven't found many tutorials about it. And it is that I was able to create the form but the formset does not appear. What am I doing wrong or what am I missing?
if I stopped using formtools if the formset is seen but not with formtools, I think that I am not generating the view correctly so that it displays the formset and saves the data throughout the multi step form
views.py
class PresupuestoWizardView(SessionWizardView):
file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'files'))
form_list = [PresupuestosClientesForm, PresupuestosVehiculosForm,PresupuestosParteForm,PresupuestosManoObraForm,PresupuestosPagosForm,PresupuestosFotosForm]
template_name = "Presupuestos/new-customer.html"
def done(self, form_list, **kwargs):
return render(self.request, "Presupuestos/new-customer.html", {
'form_data': [form.cleaned_data for form in form_list],
})
forms.py
ParteFormSet = formset_factory(PresupuestosParteForm, extra=extra_forms, max_num=20)
ManoObraFormSet = formset_factory(PresupuestosManoObraForm, extra=extra_forms, max_num=20)
PagosFormSet = formset_factory(PresupuestosPagosForm, extra=extra_forms, max_num=20)
extra_forms = 1
DESCUENTO = (
('Quantity', 'Quantity'),
('Percentage', 'Percentage'),
)
DISCOUNT= (
('Quantity', 'Quantity'),
('Percentage', 'Percentage'),
)
class PresupuestosClientesForm(forms.ModelForm):
class Meta:
model = Clientes
fields = '__all__'
widgets = {
'titulo': forms.Select(
attrs={
'class': 'form-select'
}
),
'nombre': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'apellido': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'correo': forms.EmailInput(
attrs={
'class': 'form-control'
}
),
'telefono': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'tel': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'notas': forms.TextInput(
attrs={
'class': 'form-control'
}
),
}
class PresupuestosVehiculosForm(forms.ModelForm):
class Meta:
model = Carro
fields = '__all__'
widgets = {
'placas': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'año': forms.NumberInput(
attrs={
'class': 'form-control'
}
),
'modelo':forms.TextInput(
attrs={
'class':'form-control'
}
),
'marca': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'tipo': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'motor': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'vin': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'color': forms.TextInput(
attrs={
'class': 'form-control'
}
),
}
class PresupuestosFotosForm(forms.ModelForm):
class Meta:
model = Foto
fields = '__all__'
widgets = {
'imagenes': forms.FileInput(
attrs={
'class': 'form-control',
'multiple': True
}
),
}