Recien comienzo a usar Django y me esta encantando, de pronto no puedo
evitar compararlo con el framework que mejor manejo y que esta basado en
PHP como lo es Symfony, pero, a django le veo mucho potencial.
La duda es simple. Una vez que envio el formulario para validarlo, como
puedo alterar el valor de un field de este formulario antes de
validarlo ?
def add(request):
if request.method == "POST":
# Aqui quisiera modificar algún campo como la fecha para
que sea tomada del sistema.
form = myForm(request.POST)
if form.is_valid():
...
Saludos !
--
________________________________________________________
ISC. Jorge Luis Hernández C.
Desarrollador de Software y Tecnologías Libres
Usuario GNU/Linux Debian
http://lesthack.com.mx
@lesthack
________________________________________________________
Eso podrías hacerlo en el mismo formulario, asignandole un valor por
defecto al campo mediante el parámetro initial al instanciarlo antes
de pasarselo al template.
https://docs.djangoproject.com/en/dev/ref/forms/fields/#initial
Saludos
2011/7/31 Jorge Luis Hernandez <lest...@gmail.com>:
--
Ing. Pedro Muñoz del Rio
CIP: 105362
------------------------------------------------
APESOL: http://www.apesol.org
Nuestros servicios: http://www.simuder.com
Tratandose de un campo como fecha, si yo le añado un valor por default
al campo del formluario, tengo por lo tanto que incluirlo en el
template, aunque para que el usuario no lo vea lo he puesto como
HiddenInput, pero, esto da cabidad a que cualquer usuario al ver el
código del html, pueda alterar el valor del campo hidden de la fecha y
enviar otra que no es.
Como resolver ese problema ?
El dom, 31-07-2011 a las 16:04 -0500, Pedro Muñoz del Río escribió:
> Hola
>
> Eso podrías hacerlo en el mismo formulario, asignandole un valor por
> defecto al campo mediante el parámetro initial al instanciarlo antes
> de pasarselo al template.
>
> https://docs.djangoproject.com/en/dev/ref/forms/fields/#initial
>
> Saludos
Supongo que CSRF se encarga que no se modifiquen los campos que uno
envía... aunque no estoy seguro cómo funciona exactamente. Vas a tener
que averiguar un poco al respecto para confirmar, pero la solución
estoy seguro que es CSRF.
Saludos,
Toote
--
Web: http://www.enespanol.com.ar
La pregunta es, por qué poner la fecha en un formulario si la vas a
obtener del sistema? Si no quiero que el usuario altere una fecha no
la pongo en un formulario, si hay que presentarla se pasa como
parámetro adicional en el template.
Si quieres que una vez el usuario ha completado el formulario éste
devuelva un tipo de dato distinto, por ejemplo una instancia de un
modelo, puedes hacerlo en el método clean de cada campo.
Si tienes datos que tienes que mantener en diferentes páginas utiliza
las sesiones.
Saludos,
--
Antoni Aloy López
Blog: http://trespams.com
Site: http://apsl.net
Implemento la protección contra ataques del tipo csrf, sin embargo, lo
que comento de poder alterar el valor de un campo cuando este es del
tipo hidden es posible y no es un ataque csrf, incluso, acabo de hacer
la prueba, pude dar de alta un registro con la fecha de ayer, y el valor
default que he puesto en Initial es la de hoy.
En symfony por ejemplo, es posible modificar los valores de un
formulario antes o despues de validarlo, supongo los formularios de
django pueden ser igual de flexibles pero aun no encuentro como hacerlo.
Saludos !
Si exacto, ese es el fin de mi pregunta inicial de este hilo, no quiero
incluir el campo de la fecha en mi formulario, aunque si es un campo de
mi modelo.
Estoy checando el método clean para este campo, si tengo dudas vuelvo al
hilo.
Gracias !
<img
src="http://ejemplo.com/transferir?cuenta=alicia&cantidad=1000">-- Ariel Camino
form = NombreForm(request.POST)
form.nombrecampo = "assigno el valor"
print form
revisa doc sobre form
https://docs.djangoproject.com/en/dev/topics/forms/