Адаптируйте мое представление django к form-wizard.init.js и jquery.steps.min.js для сохранения в базе данных

У меня вопрос, дело в том, что у меня есть проект на django, в котором есть form-wizard.init.js и jquery.steps.min.js и он работает довольно хорошо, я также разместил formset в django, все в порядке. Дело в том, что я только что увидел, что для меня, чтобы добавить в базу данных, мое представление не работает. Есть ли способ сохранить данные шаг за шагом с django и с этими плагинами? Я также видел способ, который есть с django-formtools, но если я его реализую, что если я уже поставил form-wizard.init.js, это будет ставить все с нуля. Я приведу пример того, что у меня есть в коде, не все

views.py

def create_Presupuestos(request):

   extra_forms = 1
   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)
   presupuestosclientesform=PresupuestosClientesForm(request.POST or None)
   presupuestosvehiculosform=PresupuestosVehiculosForm(request.POST or None)
   presupuestosparteform=PresupuestosParteForm(request.POST or None)
   presupuestosmanoobraform=PresupuestosManoObraForm(request.POST or None)
   presupuestospagosform=PresupuestosPagosForm(request.POST or None)
   presupuestosfotosform=PresupuestosFotosForm(request.POST or None)

   if request.method == 'POST':
       formset = ParteFormSet(request.POST, request.FILES)
       manoObra_formset = ManoObraFormSet(request.POST, request.FILES,prefix='manoobra')
       pagos_formset = PagosFormSet(request.POST, request.FILES, prefix='pagos')
       #formset = ParteFormSet(request.POST, request.FILES,prefix='__form')
       if formset.is_valid() and manoObra_formset.is_valid() and pagos_formset.is_valid():
           presupuestosclientesform.save()
           return redirect('presupuestos:index')
   else:
       formset = ParteFormSet()
       manoObra_formset = ManoObraFormSet(prefix='manoobra')
       pagos_formset = PagosFormSet(prefix='pagos')
       presupuestosfotosform = PresupuestosFotosForm(request.POST or None)

   return render(request,'Presupuestos/new-customer.html',{
       'presupuestosclientesform':presupuestosclientesform,
       'presupuestosvehiculosform':presupuestosvehiculosform,
       'presupuestosparteform':presupuestosparteform,
       'presupuestosmanoobraform':presupuestosmanoobraform,
       'presupuestospagosform':presupuestospagosform,
       'presupuestosfotosform':presupuestosfotosform,
       'formset':formset,
       'manoObra_formset':manoObra_formset,
       'pagos_formset':pagos_formset
   })

models.py


class Presupuestos(models.Model):
    cliente= models.ForeignKey(Clientes, on_delete=models.SET_NULL, null=True)
    carro=models.ForeignKey(Carro, on_delete=models.SET_NULL, null=True)
    mano_obra=models.ForeignKey(ManoObra, on_delete=models.SET_NULL, null=True)
    parte=models.ForeignKey(Parte, on_delete=models.SET_NULL, null=True)
    garantia=models.CharField(max_length=255)
    citado_por=models.CharField(max_length=255)
    ajustado_por=models.CharField(max_length=255)
    realizado_por=models.CharField(max_length=255)
    equilibrado=models.CharField(max_length=255)
    condiciones_servicio=models.CharField(max_length=255)
    pago = models.ForeignKey(Pagos, on_delete=models.SET_NULL, null=True)
    foto = models.ForeignKey(Foto, on_delete=models.SET_NULL, null=True)

    def __str__(self):
        return f'{self.cliente} {self.carro}{self.mano_obra} {self.parte}{self.garantia}{self.citado_por}{self.ajustado_por}{self.realizado_por}{self.equilibrado}{self.condiciones_servicio}{self.pago}{self.foto}'


forms.py


class PresupuestosParteForm(forms.ModelForm):
    class Meta:
        model = Parte
        fields = '__all__'

        widgets = {
            'codigo': forms.TextInput(
                attrs={
                    'class': 'form-control',
                    'id': 'id__form-0-codigo',
                }
            ),
            'quantity': forms.NumberInput(
                attrs={
                    'class': 'form-control-quantity',
                    'id':'id__form-0-quantity',
                }
            ),
            'unit_price': forms.NumberInput(
                attrs={
                    'class': 'form-control-unit-price',
                    'id': 'id__form-0-unit_price',
                    'onchange': 'multiplicar()',
                }
            ),
            'total_price': forms.NumberInput(
                attrs={
                    'class': 'form-control-total-price',
                    'id': 'id__form-0-total_price',

                }
            ),
            'tax_free': forms.CheckboxInput(
                attrs={
                    'class': 'form-check-input',
                    'onclick': 'taxes_free(multiplicar())',
                    'id': 'id__form-0-tax_free',
                }
            ),
            'comprado_cliente': forms.CheckboxInput(
                attrs={
                    'class': 'form-check-input',
                    'onclick': 'taxes_free(descuentoParte())',
                    'id': 'id__form-0-comprado_cliente',
                }
            ),
            'descripcion': forms.TextInput(
                attrs={
                    'class': 'form-control',
                    'id': 'id__form-0-descripcion',
                }
            ),
            'descuento': forms.RadioSelect(choices=DISCOUNT,
                 attrs={
                    'class': "custom-radio-list"
                 }
            ),
            'descuentoTotal': forms.NumberInput(
                attrs={
                    'class': 'form-control',
                    'onchange': 'descuentoTotalFuncion()',
                    'placeholder': 'put the number',

                }
            ),

            'descuento_parte': forms.NumberInput(
                attrs={
                    'class': 'form-control',
                    'id': 'id__form-0-descuento_parte',
                    'onchange': 'descuentoParte(multiplicar())',
                }
            ),
            'total': forms.NumberInput(
                attrs={
                    'class': 'form-control',
                    'placeholder': '$0.00',
                }
            ),

            'resumen': forms.Textarea(
                attrs={
                    'class': 'form-control',
                    'rows': 2, 'cols': 5,
                }
            ),

        }

ParteFormSet = formset_factory(PresupuestosParteForm, extra=extra_forms, max_num=20)


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