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# este método genera el formulario en la plantilla
def formulario(request):
comercioFormSet = modelformset_factory(Comercio, exclude=('usuario'))
form = comercioFormSet(queryset=Comercio.objects.none())
bloqueFormulario = render_to_string('comercios/formulario.html',{'formulario':form}, context_instance=RequestContext(request));
return salida_final(bloqueFormulario)
# esta es la clase del modelForm
class formComercio(ModelForm):
class Meta:
model = Comercio
exclude = ('usuario',)
# este método recibe la petición para grabar la información. Aquí me aparece el error.
def guardar(request):
inst = Comercio
frmComercio = formComercio(request.POST, instance=inst)
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 originaldatos = {'nombre': request.POST['miform_nombre'],
'pais': request.POST['miform_pais'],
'departamento': request.POST['miform_departamento'],
# y así sucesivamente con todos los datos, menos con el usuario, que está excluído del modelo del formulario.
}
formulario = formComercio(datos)
nuevoComercio = formulario .save(commit=False)
nuevoComercio.usuario = request.user.id
nuevoComercio.save()
# se guardan las relaciones de ese modelo
nuevoComercio.save_m2m()