Formtools does not display my formsets, only the forms

Viewed 24

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
                }
            ),
        }


1 Answers

You need to pass your formsets into form_list not the individual forms

form_list = [PresupuestosClientesForm, PresupuestosVehiculosForm, ParteFormSet, ManoObraFormSet, PagosFormSet,PresupuestosFotosForm]

Related