У меня есть поле, определенное в моей модели-
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)
Когда я заполняю форму, выбираю «Английский» и пытаюсь отправить, я получаю сообщение об ошибке:
языки
Значение u"[u'English']" недопустимо.
Есть ли что-то основное, что я делаю неправильно? Или MultipleChoiceField в сочетании с виджетом SelectMultiple не подходит?
Кроме того, есть ли какая-либо причина, по которой кортеж вариантов не может иметь одно и то же значение дважды, как у меня сейчас («английский», «английский»)?
Вот дополнительный код, который может быть полезен для понимания сути этого вопроса
Код шаблона:
<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, чтобы понять, почему он делает то, что делает.