2009-03-06 10 views
45

sto usando qualcosa di simile nel mio modelloDjango: usando <selezionare più> e POST

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

Quando osservo i dati POST in Firebug o il debug di Django, lo vedo invia un solo valore. Sto facendo qualcosa di sbagliato o fraintendendo un concetto?

+0

Qual è il valore dei servizi forniti al modello? –

+0

Vuoi dire: servizi = Service.objects.all() ritorno render_to_response ('add.html', { 'servizi': servizi}) ?? (Non riesco a ottenere questi commenti per la formattazione.) – neoice

+3

@neoice: Suggerimento: non aggiungere dettagli alle tue domande nei commenti. Modifica la tua domanda per aggiungere fatti. La domanda viene sempre formattata correttamente. E la domanda dovrebbe stare da sola senza un filo di commenti. –

risposta

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

Jackpot! Penso di aver bisogno di cambiare i servizi ai servizi [], ma di ottenere r0xors per questo. Pensavo di aver perlustrato i documenti di Django ma a quanto pare, mi sbagliavo. – neoice

+5

Non è necessario il []. Questa è una convenzione limitata a PHP. – bobince

+0

Potrebbe valere la pena ricordare che questo funziona anche per i dati GET. 'request.GET.getlist ('services')' – Aaron

8

Cordiali saluti, ho dovuto usare:

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

perché omettendo il [] ha causato un elenco vuoto da restituire al posto dei valori corretti. Sto usando jQuery per recuperare i valori di un elemento select multiplo, e jQuery sembra aggiungere []

1

Attenzione! il metodo getlist da QueryDict restituisce una lista vuota se la chiave non esiste. Non lancia un'eccezione. http://bit.ly/MdgrUH

0

si può ottenere l'elenco previsto semplicemente utilizzando ...

request.POST.getlist('fiel_name') 
0

request.POST.getlist ('servizi')

lavorato per me. oppure è possibile definire il nome della casella di selezione come elenco

+0

come migliora questa risposta: https://stackoverflow.com/a/618626/982161 ?? –