Адаптируйте мое представление 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)