2016-09-13 2 views
0

Ich versuche, alle ausgewählten Kontrollkästchen Werte als Liste zu bekommen jedoch nicht in der Lage, um das Formular zu validieren aufgrund Auswahl OptionValidate und django Formulars unkown Anzahl der multipleselect Checkbox Felder

forms.py erhalten:

class MarkAccountsForm(forms.Form): 
    accounts = forms.MultipleChoiceField(
     widget = forms.CheckboxSelectMultiple, 
     required = False 
    ) 

Vorlage:

{% for account in accounts %} 
    <tr> 
     <td><input type="checkbox" name="accounts" value="{{ account.id }}"></td> 
     <td>{{ account.name }}</td> 
    </tr> 
{% endfor %} 

views.py:

if request.method == 'POST': 
    form = MarkAccountsForm(request.POST) 
    if form.is_valid(): #this fails 
     data = form.cleaned_data 

Wenn ich versuche, form.errors zu drucken, heißt es Select a valid choice. 1119 is not one of the available choices.

Gibt es eine Möglichkeit, dass ich Wahl Validierung vermeiden kann und immer noch Werte erhalten von allen Konten Kontrollkästchen als Liste überprüft? Wie sage ich es, um irgendwelche Entscheidungen zu treffen? Wenn ich die Liste ohne Formularvalidierung bekommen kann, ist das auch in Ordnung.

Antwort

1

Wenn Sie sich nicht um Validierung kümmern, warum rufen Sie is_valid? Warum verwenden Sie überhaupt eine Form-Klasse? Sie verwenden es nicht, um das Formular anzuzeigen, also können Sie es auch ganz auslassen und nur die Daten von request.POST.getlist('accounts') abrufen.

+0

Danke Daniel, fragte sich, wann du antworten würdest. Nun, 'is_valid' zu vermeiden, war meine zweite Option, wenn es nicht möglich ist, und ich wusste nicht über 'getlist', ich habe' get' versucht und es gab mir nur die letzte angekreuzte Checkbox's ID. – MohitC

Verwandte Themen