Ver Mensaje Individual
  #10 (permalink)  
Antiguo 21/03/2012, 22:46
Avatar de oswalgogra
oswalgogra
 
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Información Respuesta: Formularios de Edicion en Django

Hola, yo tengo problemas para grabar información de lo recibido desde un formulario generado a partir de un modelForm.

Siempre de aparece el error de que los datos recibidos en request.POST no son válidos.

Alguien sabe si hay algún ejemplo en el que muestren cómo se deben recibir los datos generados? la plantilla de formulario debe estar construida de una forma especial?

Este es el código que tengo:

Código Python:
Ver original
  1. # este método genera el formulario en la plantilla
  2. def formulario(request):
  3.     comercioFormSet = modelformset_factory(Comercio, exclude=('usuario'))
  4.     form = comercioFormSet(queryset=Comercio.objects.none())
  5.     bloqueFormulario = render_to_string('comercios/formulario.html',{'formulario':form}, context_instance=RequestContext(request));
  6.     return salida_final(bloqueFormulario)
  7.  
  8. # esta es la clase del modelForm
  9. class formComercio(ModelForm):
  10.     class Meta:
  11.         model = Comercio
  12.         exclude = ('usuario',)
  13.  
  14. # este método recibe la petición para grabar la información. Aquí me aparece el error.
  15. def guardar(request):
  16.     inst = Comercio
  17.     frmComercio = formComercio(request.POST, instance=inst)
  18.     nuevoComercio = frmComercio.save(commit=False)

Gracias de antemano!

Actualización:
Ya lo solucioné! tuve que crear un diccionario con los datos que vienen del POST
Código Python:
Ver original
  1. datos = {'nombre': request.POST['miform_nombre'],
  2. 'pais': request.POST['miform_pais'],
  3. 'departamento': request.POST['miform_departamento'],
  4. # y así sucesivamente con todos los datos, menos con el usuario, que está excluído del modelo del formulario.
  5. }
  6. formulario = formComercio(datos)
  7. nuevoComercio = formulario .save(commit=False)
  8. nuevoComercio.usuario = request.user.id
  9. nuevoComercio.save()
  10. # se guardan las relaciones de ese modelo
  11. nuevoComercio.save_m2m()
__________________
Oswaldo: El que gobierna con el poder de Dios.

Última edición por oswalgogra; 07/06/2012 a las 10:47 Razón: Agregué el código de lo que estoy haciendo.