Мне нужно заполнить CharField результатом набора флажков плюс «другой» вариант [укажите] (значение будет «option-a, other» для состояния формы ниже).Форма может выглядеть следующим образом:
[x] option a
[ ] option b
[x] other
If you selected "other", please specify. [__________]
Мне удалось пройти большую часть пути, реализовав подкласс MultipleChoiceField:
class CommaStringMultipleChoiceField(MultipleChoiceField):
def to_python(self, value):
return [val.rstrip().lstrip() for val in value.split(',')]
def clean(self, value):
return ",".join([val.rstrip().lstrip() for val in value])
В своем классе формы я назначаюэто поле в моем поле формы:
TYPE_CHOICES = [
(u'option-a',u"Option A"),
(u'option-b',u"Option B"),
(u'other', u"Other"),
]
type = CommaStringMultipleChoiceField(
choices=TYPE_CHOICES,
widget=CheckboxSelectMultiple
)
Это правильно отображает форму, и вызывается мой метод clean (), но когда я сохраняю форму, я получаю ошибку проверки:
Value u'education,other' is not a valid choice.
Я играл с добавлением собственного валидатора, но пока это не имело никакого значения.Чего не хватает?