ChoiceField или CharField в форме Джанго - PullRequest
3 голосов
/ 19 марта 2010

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

Ответы [ 3 ]

5 голосов
/ 19 марта 2010

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

2 голосов
/ 19 марта 2010

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

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

edit : скрыто, как в style="display: none;", а не в поле HiddenInput

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

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

Вы должны будете написать свой собственный код проверки и установить required=False в поле «Другое» Charfield

0 голосов
/ 26 января 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...