Ver Mensaje Individual
  #7 (permalink)  
Antiguo 02/11/2012, 08:03
abdonroda
 
Fecha de Ingreso: septiembre-2010
Mensajes: 28
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: ¿Cómo tratar varios artículos a la vez en Django?

Entiendo... Os dejo más información de lo que yo hice leyendo la documentación de Django. Tras poner todo eso lo único que me sale en la página es el botón de Actualizar unidades.

Por sino se sobreentiende, lo que estoy tratando de hacer es un carrito de compra, donde los artículos son los recambios.

Saludos y gracias de antemano de nuevo.

models.py
Código Python:
Ver original
  1. class CarritoDeCompra(models.Model):
  2.     user = models.ForeignKey(User)
  3.     recambio = models.ForeignKey(Recambio)
  4.     unidades = models.PositiveSmallIntegerField()
  5.     precio = models.FloatField()
  6.     subfamilia = models.ForeignKey(Subfamilia)
  7.  
  8.     class Meta:
  9.         verbose_name_plural = 'Carritos de compra'
  10.  
  11.     def __unicode__(self):
  12.         return unicode(self.user)
forms.py
Código Python:
Ver original
  1. class UnidadesForm(forms.ModelForm):
  2.     class Meta:
  3.         model = CarritoDeCompra
  4.         fields = ['unidades']
views.py
Código Python:
Ver original
  1. @login_required(login_url='/iniciar-sesion/')
  2. def carrito_de_compra(request):
  3.     lista_recambios = CarritoDeCompra.objects.filter(user=request.user)
  4.  
  5.     precio_total = 0
  6.     unidades_totales = 0
  7.     for recambio in lista_recambios:
  8.         precio_total = recambio.precio * recambio.unidades + precio_total
  9.         unidades_totales = recambio.unidades + unidades_totales
  10.  
  11.  
  12.     UnidadesFormSet = formset_factory(CarritoDeCompra, extra=0)
  13.     if request.method == 'POST':
  14.         formset = UnidadesFormSet(request.POST, request.FILES)
  15.         if formset.is_valid():
  16.             # actualizar las unidades
  17.             return HttpResponseRedirect('/carrito-de-compra/')
  18.     else:
  19.         formset = UnidadesFormSet()
  20.  
  21.  
  22.     return render_to_response('carrito_de_compra.html', {
  23.         'lista_recambios': lista_recambios,
  24.         'precio_total': precio_total,
  25.         'unidades_totales': unidades_totales,
  26.         'formset': formset
  27.     }, context_instance=RequestContext(request))
carrito_de_compra.html
Código Python:
Ver original
  1. [...]
  2. <form method="post" action="">{% csrf_token %}
  3.     {{ formset.management_form }}
  4.     <table>
  5.         {% for form in formset %}
  6.             {{ form }}
  7.         {% endfor %}
  8.     </table>
  9.     <input type="submit" value="Actualizar unidades"/>
  10. </form>
  11. [...]