Ver Mensaje Individual
  #17 (permalink)  
Antiguo 13/11/2012, 14:11
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?

Cita:
Iniciado por razpeitia Ver Mensaje
Cuando iteras el formset, lo que haces es que cada iteración es un form, recambio es un muy mal nombre para esa variable. Uso recambio.recambio.value para que solo me devuelva el valor (nada de editar este valor) y uso as_hidden por que al hacer el post request es necesario que vayan todos los valores. (Ver respuesta de arriba).
Pero es que lo que devuelve es la id (1) del recambio, y no el nombre (Recambio de prueba).


Cita:
Iniciado por razpeitia Ver Mensaje
Exacto. De hecho en primera imagen que pusiste lo único editable que pusiste fue las unidades. Otra cosa es que te recomiendo es que no confíes en lo que regresa en campo precio (en el post request), recuerda siempre hacer el calculo según las unidades.
La primera imagen no usaba ningún formset, solo estaba maquetando cómo quedará al final.
¿Cómo? ¿Dices de poner este trozo de código dentro del 'if request.method == 'POST':'?

Código Python:
Ver original
  1. precio_total = 0
  2. unidades_totales = 0
  3. for recambio in carrito_de_compra:
  4.     precio_total = recambio.precio * recambio.unidades + precio_total
  5.     unidades_totales = recambio.unidades + unidades_totales

Cita:
Iniciado por razpeitia Ver Mensaje
¿Haz intentado con recamio.id.value?
Sí, y me da el mismo resultado, por eso te preguntaba.


Cita:
Iniciado por razpeitia Ver Mensaje
Para eso puedes usar el método is_valid y capturar las excepciones de validación que puedan surgir por si falta algún otro campo.

Por ultimo para desplegar que hubo un o varios errores puedes añadir al response una variable que sea una lista de errores, si esta vacía no hay errores si hay entonces desplegar los errores.
Lo he conseguido hacer esta tarde pero de una manera mucho más sencilla (no sé si menos eficaz); añadí el errors en la plantilla.


EDITADO:

Me acabo de encontrar con un problema... Si yo con el inspector de Chrome cambio los valores de los input hidden (precio por ejemplo) y le doy al botón de Actualizar unidades, me cambia el precio. Cosa que evidentemente no quiero que se pueda. :/
¿No puedo poner solamente un input para unidades?

Última edición por abdonroda; 13/11/2012 a las 15:54 Razón: Añadir una duda