Código Python:
Ver original@login_required(login_url='/iniciar-sesion/')
def carrito_de_compra(request, deleted_item=None):
"""deleted_item es la clave primaria (pk) del articulo a borrar,
si deleted_item es None entonces regresa el formset de lo
contrario el borrado es ejecutado."""
lista_recambios = CarritoDeCompra.objects.filter(user=request.user)
precio_total = 0
unidades_totales = 0
for recambio in lista_recambios:
precio_total = recambio.precio * recambio.unidades + precio_total
unidades_totales = recambio.unidades + unidades_totales
UnidadesFormSet = formset_factory(CarritoDeCompra, extra=0)
if request.method == 'POST':
formset = UnidadesFormSet(request.POST, request.FILES)
if formset.is_valid():
# actualizar las unidades
formset.save()
return HttpResponseRedirect('/carrito-de-compra/')
else:
if deleted_item:
item_to_erase = lista_recambios.get(pk=deleted_item)
item_to_erase.delete()
item_to_erase = None
return HttpResponseRedirect('/carrito-de-compra/')
else:
formset = UnidadesFormSet()
return render_to_response('carrito_de_compra.html', {
'lista_recambios': lista_recambios,
'precio_total': precio_total,
'unidades_totales': unidades_totales,
'formset': formset
}, context_instance=RequestContext(request))
No tengo todo el proyecto como para hacer pruebas, pero al menos esto te servirá.