Jose,
No es que se vuelva a cargar el formulario de cara al usuario. El
formulario tienes que construirlo en cada request, bien quieras
mostrarlo al usuario o validar los datos recibidos. No hace falta que
devuelvas el formulario de nuevo con las localidades filtradas, lo
puedes guardar directamente y redirigir al usuario a otra página o lo
que quieras hacer. Pero necesitas construir el formulario con las
localidades filtradas para validar que la localidad seleccionada forma
parte de las localidades correspondientes a la provincia seleccionada
así como validar el resto de campos. Por ejemplo puedes construir el
formulario con los datos recibidos por request.POST y si es correcto
guardar los datos y redirigir al usuario a otra página. Todo esto es
independiente de cambiar las localidades que se puedan seleccionar
mediante AJAX. No se trata de volver a enseñar el formulario al
usuario, sino de validarlo. De todas formas también te vale para
mostrar el formulario al usuario, en caso de que haya errores, sólo
con las localidades correspondientes a la provincia seleccionada en
principio y que cambien si cambias de provincia (de nuevo mediante
AJAX).
Por ejemplo podrías validar el formulario tras construir la lista de
choices en función de la provincia seleccionada y si todo es correcto
guardarlo. Por eso pasas la provincia seleccionada como parámetro
cuando construyes el formulario: para generar la lista de choices de
localidades (ver mi artículo) en función de esa provincia y poder
validarlo correctamente:
# ...
if request.POST:
province = Province.objects.get(id=request.POST['province'])
mi_form = MiFormulario(data=request.POST, provincia=province)
if mi_form.is_valid():
mi_form.save() # en caso de que sea un ModelForm, si no
acceder a mi_form.cleaned_data
return HttpResponseRedirect('/formulario-guardado/')
else:
On 13 ago, 10:34, Jose Jiménez López <
jjimenezlo...@gmail.com> wrote:
> Hola Antonio,
>
> gracias por responser, muy interesante tu artículo :)
>
> Pero no sé si es exactamente lo que necesito... como tu lo describes, una
> vez que el usuario selecciona la provincia, debería enviar el formulario, y
> volver a cargarlo completo pero ahora con las localidades filtradas a solo
> esa provincia. ¿Lo he entendido bien?
> Ese no es exactamente mi caso, mi formulario no se recarga, solamente le
> introduzco los valores al combo de las localidades cuando el usuario
> selecciona una provincia mediante Ajax, sin necesidad de recargar el
> formulario.
>
> Saludos.
>
> 2009/8/13 A Melé <
antonio.m...@gmail.com>
>
jjimenezlo...@gmail.comwww.josejimenez.net