У меня есть поле, определенное в моей модельноMultipleChoiceField с виджем SelectMultiple «Значение [...] не является допустимым выбором».
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, чтобы понять, почему он делает то, что он делает.
Спасибо Иордании, за быстрый ответ. Я разместил соответствующую информацию выше. Мой ModelForm не содержит ничего лишнего, и избавление от явного параметра виджета, к сожалению, не помогает. Мне кажется, что код проверки формы Django по какой-то причине принимает массив в данных POST и преобразует его в строку ... – dpetters