2015-09-15 1 views
1

Я пытаюсь создать форму, состоящую из поля множественного выбора, которое используется для выбора нескольких экземпляров моей модели Person.Django forms.SelectMultiple жалуется на выбор

class MyForm(forms.Form): 
    choices = [(p.id, str(p)) for p in Person.objects.all()] 
    my_field = forms.ChoiceField(widget=forms.SelectMultiple, choices=choices) 

Виджет выглядит точно так же, как я хочу, но когда я отправить форму, он терпит неудачу с сообщением

Выберите правильный выбор. ['2', '3'] не является одним из доступных вариантов.

Что я делаю неправильно? При удалении widget=forms.SelectMultiple, из третьей строки он работает, но тогда это только одно поле для выбора.

ответ

3

Вы получаете сообщение об ошибке, потому что ChoiceField ожидает единственный выбор.

Если вы хотите разрешить несколько вариантов, используйте MultipleChoiceField.

my_field = forms.MultipleChoiceField(choices=choices) 

Примечание Вы не должны указывать виджет, так как это forms.SelectMultiple по умолчанию.