首页 文章

如何使用互斥的radiobuttons创建Django表单?

提问于
浏览
2

我需要一个带有两个(互斥)单选按钮的表单,以及它们之间的一些其他控件 . 我的意思是我需要这样的形式:
enter image description here

Here我找到了一种方法来创建一个带有两个互斥的单选按钮的布尔字段,但我不知道如何在它们之间插入其他控件 .

1 回答

  • 0

    我建议你把它分成两个(或更多)单独的Django表单,用一些客户端JS来点击单选按钮(它们本身不是任何Django表单的一部分)来启用/禁用每组字段 .

    例如

    class FormA(forms.Form):
        some_field = forms.CharField()
        other_field = forms.CharField()
    
    class FormB(forms.Form):
        third_field = forms.CharField()
        one_more_field = forms.CharField()
    

    在你看来:

    def my_view(request):
        form_a = None
        form_b = None
    
        if request.POST:
            if request.POST['choice_field'] == 'a':
                form_a = FormA(prefix='a', data=request.POST)
                if form_a.is_valid():
                    # do something
            if request.POST['choice_field'] == 'b':
                form_b = FormB(prefix='b', data=request.POST)
                if form_b.is_valid():
                    # do something
    
        form_a = form_a or FormA(prefix='a')
        form_b = form_b or FormA(prefix='b')
    
        context = {
            'form_a': form_a,
            'form_b': form_b,
        }
        return render_to_response("my_form.html", context, RequestContext(request))
    

    在您的模板中:

    <form action="" method="post">
      <input type="radio" name="choice_field" value="a" />
      <ul>
          {{ form_a.as_ul }}
      </ul>
      <input type="radio" name="choice_field" value="b" />
      <ul>
          {{ form_b.as_ul }}
      </ul>
      <input type="submit" value="Submit" />
    </form>
    

相关问题