2010-03-19 5 views
3

У меня есть CharField в модели, которую нужно выбрать ChoiceField. Если выбор пользователя не в поле выбора, они выбирают «другое» и могут вводить текстовый ввод. Как я могу это сделать? Мне не нужен javascript; просто помощь с частью джанго.ChoiceField или CharField в форме django

ответ

5

Наилучший подход состоит в том, чтобы иметь только CharField в ваших моделях/формах с пользовательским виджетами, чтобы отображать ваши варианты и «другие» с правильным поведением.

2

RZ имеет хорошее решение

Альтернативное решение (с меньшим количеством JavaScript) должен иметь скрытый «другой» CharField, что делается видимым при выборе опции «Other» на ChoiceField

редактировать: Hidden как в style="display: none;" не поле HiddenInput

что-то вроде (с JQuery):

$("#id_myChoiceField").change(function() { 
    if ($(this).val() == 'other') { 
     $("#id_myOtherInput").show(); 
    } 
    else { 
     $("#id_myOtherInput").hide(); 
    } 
}); 

Вы должны написать свой собственный код подтверждения, хотя и установить required=False на «Other» CharField

0

Ваш класс для этой формы должно выглядеть примерно так:

class ChoicesForm(forms.ModelForm): 
    # some other fields here 
    ... 
    other = forms.CharField(required=False) 
    ... 

Просто создать JavaScript, который отображает «другой» ввод текста, если пользователь выбирает «другой» среди вариантов.

Смежные вопросы