В моей модели определено поле -
languages = models.CharField(max_length = 30, choices=LANGUAGE_CHOICES, blank = True, null = True)
Выбор прост -
LANGUAGE_CHOICES = (
('English', 'English'),
)
Я определяю ModelForm для этой модели и переопределяю поле -
languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES, widget=forms.SelectMultiple)
Когда я заполняю форму, выбираю "Английский" и пытаюсь отправить, я получаю сообщение об ошибке -
languages
Значение u "[u'English ']" не равноправильный выбор
Есть что-то основное, что я делаю неправильно?Или MultipleChoiceField в сочетании с виджетом SelectMultiple не подходит?
Кроме того, есть ли причина, по которой кортеж выбора не может иметь одно и то же значение дважды, как у меня сейчас («Английский»,'English')?
Вот еще один код, который может быть полезен для ознакомления с этим
Код шаблона:
<div class="abovepad">
<label for="id_languages">Languages:</label>
{{form.languages}}
</div>
Часть данных POST с языками:
u'languages': [u'English'],
Соответствующий фрагмент кода ModelForm:
class ProfileForm(forms.ModelForm):
languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES)
class Meta:
model = Student
Как видите, я почти ничего не настраивал.В прошлом, когда я сталкивался с этой проблемой, я переключался на создание элементов в списке для моделей, а затем использовал поля ManyToMany, которые не вызывали ту же проблему.Для тех случаев, когда предметы были моделями, имело смысл;в этом случае это не так.Я просто хочу знать, делаю ли я что-то не так или эта комбо не должна работать.Если нет реального ответа, тогда я мог бы попытаться покопаться в коде формы Django, чтобы понять, почему он делает то, что делает.