views:

1515

answers:

3

I have a form with a choice field that is using CheckboxSelectMultiple widget:

foo = forms.ChoiceField(widget=forms.CheckboxSelectMultiple,
                        choices=(
                                  ("1", "ONE"),
                                  ("2", "TWO"),
                                 ))

The form renders fine showing two checkboxes, however it doesn't validate.

If I select both checkboxes I am getting an error: Select a valid choice. [u'1', u'2'] is not one of the available choices

Selecting one checkbox doesn't work either, it gives me: Select a valid choice. [u'1'] is not one of the available choices.

What's going on here?

If it matters, I am using the latest Django trunk

+3  A: 

If you make the field a forms.MultipleChoiceField rather than a forms.ChoiceField it will work better.

A: 

My form doesnt validate too , although i am using forms.MultipleChoiceField rather than a forms.ChoiceField. I populate the choices dynamically in init() of my form class.

Aashish
A: 

May this helpful for you

num_choices = ( ("1", "ONE"), ("2", "TWO"), ("3", "Three"), ("4", "Four"))

num_list = forms.MultipleChoiceField(choices=num_choices, required=True, widget=forms.CheckboxSelectMultiple(), label='Select No', initial=("1", "2"))

If you want to pass the ORM object directly, then you can try the following

num_list = forms.ModelMultipleChoiceField(Numbers.objects.all(), required=True, widget=forms.CheckboxSelectMultiple(), label='Select No')

Bala kumar