2009-03-06 3 views
45

estoy usando algo como esto en mi plantillaDjango: usando <seleccionar varios> y POST

<select multiple="multiple" name="services" id="services" size="5"> 
    {% for service in services %} 
     <option value="{{service.id}}">{{service}}</option> 
    {% endfor %} 
</select> 

Cuando veo los datos POST en Firebug o la depuración de Django, lo veo sólo envía un valor. ¿Estoy haciendo algo mal o estoy malinterpretando un concepto?

+0

¿Cuál es el valor de los servicios que se proporcionan a la plantilla? –

+0

Qué quiere decir: servicios Service.objects.all =() render_to_response retorno ('add.html', { 'servicios': los servicios}) ?? (No puedo obtener estos comentarios para formatear en absoluto.) – neoice

+3

@neoice: Sugerencia: no agregue detalles a sus preguntas en los comentarios. Edita tu pregunta para agregar hechos. La pregunta siempre formatea correctamente. Y la pregunta debe mantenerse por sí misma sin un hilo de comentarios. –

Respuesta

110
request.POST.getlist('services') 
+0

¡Jackpot! Creo que necesito cambiar los servicios a los servicios [], pero los comentarios de lista de resultados para esto. Pensé que había revisado los documentos de Django, pero aparentemente estaba equivocado. – neoice

+5

No necesita el []. Esa es una convención limitada a PHP. – bobince

+0

Podría valer la pena mencionar que esto también funciona para los datos GET. 'request.GET.getlist ('services')' – Aaron

8

Para su información, tuve que usar:

list = request.POST.getlist("items[ ]") 

debido a la omisión de la [] causó una lista en blanco para ser devuelto en lugar de los valores correctos. Estoy usando jQuery para recuperar los valores de un elemento de selección múltiple, y parece que jQuery está agregando el []

1

¡Cuidado! El método getlist de QueryDict devuelve una lista vacía si la clave no existe. No arroja una excepción. http://bit.ly/MdgrUH

0

se puede obtener la lista de espera sólo mediante el uso ...

request.POST.getlist('fiel_name') 
0

request.POST.getlist ('servicios')

trabajado para mí. o puede definir el nombre del cuadro de selección como una lista

+0

¿Cómo mejora esta respuesta esto: https://stackoverflow.com/a/618626/982161 ?? –