[pyar] [Django] Tests con select multiple

Matigro matigro en gmail.com
Jue Ene 13 15:46:40 ART 2011


Hola gente.

Estoy testeando un formulario y estoy teniendo problemas con un select
multiple. No me está validando vía Form.clean(), seguramente debo
estar armando mal el tipo de consulta
Mi Form tiene una variable rubros = ModelMultipleChoiceField()
y un método clean():

   def clean(self):
       #----------------------------------
       print self.cleaned_data
       #----------------------------------
       if not self.cleaned_data.get("nombre", "").strip():
           msgErrors.append("El campo Nombre es obligatorio.")

       if self.cleaned_data.get("rubros", "[]") == "[]":
           msgErrors.append("Debe asignar al menos un Rubro al programa")
       return self.cleaned_data

*msgErrors es pq no sólo manejo los errores del framework, sino que
hay algunos que están customizados.


En el tests.py hago:
def test_crearSoloConRubros(self):
       response = self.client.post('/programa/',
                                               {'rubros': (72, 461)}
# Según leí en (*1)
                                              )

El print del views.py muestra que recibe a rubros
Request.POST <QueryDict: {u'rubros': [u'58', u'263']}>,pero el
cleaned_data aparece VACÍO: {}


El tema es que por navegador me anda bien, por eso pienso que puede
ser el tema de mi forma de armar el tipo de dato para el test.

Cuando hago un post vía le navegador web, tengo que
Request.POST <QueryDict: {u'rubros': [u'58', u'263']}> y en la
variable cleaned_data del Form tengo: {'rubros': [<Rubro: Comercio ->
Papeleria>, <Rubro: Comercio -> Jugeteria>]}

Por lo que el validador anda OK por navegador.

Como siempre, cualquier idea o ayuda sirve.

Gracias


(*1) http://docs.djangoproject.com/en/dev/topics/testing/
To submit multiple values for a given key -- for example, to specify
the selections for a <select multiple> -- provide the values as a list
or tuple for the required key. For example, this value of data would
submit three selected values for the field named choices:

{'choices': ('a', 'b', 'd')}

-- 
http://www.linkedin.com/in/matiasgieco



More information about the pyar mailing list