2010-03-10 1 views
40

Ciao Ho un array di checkbox, ad es.Come ottengo i valori di tutte le caselle selezionate in una richiesta Django.POST?

<input type="checkbox" name="checks[]" value="1" /> 
<input type="checkbox" name="checks[]" value="2" /> 
<input type="checkbox" name="checks[]" value="3" /> 
<input type="checkbox" name="checks[]" value="4" /> 

Come accedere a questi in view.py se è selezionato più di uno?

ho cercato

request.POST['checks'] 

ma che mi dà solo l'ultimo valore. Quello che voglio sono tutti quelli che sono stati selezionati in un elenco, ad es. 1,3,4

Grazie

risposta

48

Prova questo:

some_var = request.POST.getlist('checks') 

some_var conterrà [1,3,4] (quei valori che sono stati controllati)

+1

questo dovrebbe essere 'request.POST.getlist ('checks')' – Claudiu

17

Ciò risolverà il vostro problema,

some_var = request.POST.getlist('checks[]') 

Se si scrive some_var = request.POST.getlist('checks') potrebbe non funzionare correttamente.

+0

Questo è il modo in cui è necessario farlo per Django 1.8+ (non sono sicuro delle versioni precedenti o di quale versione l'OP stava usando al tempo). – tokyovariable

+0

Intendevi 'getlist ('checks', [])'? In tal caso, almeno in [versione 1.10] (https://docs.djangoproject.com/en/1.10/ref/request-response/#django.http.QueryDict.getlist), le parentesi non sono obbligatorie. 'getlist' restituirà una lista vuota di default, per chiavi mancanti. –