2016-07-20 6 views
1

djangoフォームを使用してラジオボタンの隣にテキストボックスを追加するにはどうすればよいですか?私は既にラジオボタンだけの設定をしています。ラジオボタンの隣にテキストボックスを追加する方法

また、「その他」の代わりにテキストボックスの値を保存したいと思います。

forms.py

from django import forms 
from .models import MyModel 

class MyForm(forms.ModelForm): 
    class Meta: 
     model = MyModel 
     fields = (
      'question', 
     ) 
     widgets = { 
      'question': forms.RadioSelect, 
     } 

models.py

class MyModel(TimeStampedModel): 
    Choice1 = "Choice 1" 
    Choice2 = "Choice 2" 
    Other = "Other" 
    MyModel_Choices = (
     (Choice1 = 'Choice 1'), 
     (Choice2 = 'Choice 2'), 
     (Other = 'Other'), 
    ) 

    question = models.CharField(
     _('Question'), 
     max_length=100, 
     choices=MyModel_Choices, 
     help_text='Help Text' 
    ) 

予想される出力:

質問:

  • Choice1
  • Choice2
  • その他[テキストボックス]のないフォームでの入力の一つが、その後することができますように、テキストボックスには、あなたのDjangoのフォームではない場合

ヘルプテキスト

答えて

0

は、ページのロード時にその入力を隠し、あなたのjavascriptファイルで今forms.py

であなたのDjangoのフォームに別の入力フィールドを追加します。

$("#user-input-textbox").hide(); 

そして「その他」のラジオボタンがチェックされたときにそれを表示し、それがオフになっているときにそれを隠しても隠し前に既存の値をクリア:私はそれが私のジャンゴになりたいでしょう

$('#Other').click(function(){ 
    if ($(this).is(':checked')){ 
     $("#user-input-textbox").show(); 
    } 
    else{ 
     $("#user-input-textbox").html(''); 
     $("#user-input-textbox").hide(); 
    } 
}); 
+0

これは、別の入力フィールドを追加するために私を必要とするでしょうか?私のモデルの別の列? – Markkkkk

+0

いいえ、あなたは必要ありません。 技術的には、それを行うには2つの方法があります。 まずu'llはあなたがモデルの独立した意志に応じてできるだけ多くの入力フィールドやラジオボタンを追加するために、完全な贅沢を持っている代わりにforms.ModelFormのforms.Form使用することです。 > http://stackoverflow.com/questions/12097825/specifying-widget-for-model-form-extra-field-django –

+0

- 第二の方法は、あなたのforms.ModelFormを使用して、単にそれはこのように1つの余分のフィールドを含めることですまた、あなたはこのような何かを行うことによって隠された、新規追加入力を行うことができます - > http://stackoverflow.com/questions/15795869/django-modelform-to-have-a-hidden-input –

0

、そのテキストをHTML内のdivに入れ、CSS表示プロパティインラインまたはインラインブロックを使用して、「その他」のラジオボタンの隣に表示することができます

が見るこの - >http://www.w3schools.com/cssref/pr_class_display.asp

+0

フォームでは、私はそれを私のフォームの入力の1つにしたいと思います(「その他」を置き換える)。 – Markkkkk

+0

あなたはそれが動的であるか、または何かしたいですか?私はあなたのMyModel_Choicesの中だけで、他のテキストの代わりにそのテキストを書くなら、私はそれがうまくいくと思います。 –

+0

私はそれを動的にしたい、ユーザーがそれを入力します。 – Markkkkk

0

私はあなたが持っていると思いますので、あなたがウィジェットを指定することができれば、それもうまくいくとは思いませんがないところモデルでそれを保存する - あなたのquestionフィールドが設定した選択肢に制限されていますモデルでは

あなたのデザインを考え直したいかもしれません。ラジオの選択肢が他の場合は、ラジオボタンの下に別の入力が必要です(おそらく?)。

これは、すべての入力に名前が割り当てられているため、投稿するときにコードを処理する必要があります。

関連する問題