我需要一个带有两个(互斥)单选按钮的表单,以及它们之间的一些其他控件。我的意思是我需要这样的形式:
Here我找到了一种方法来制作一个带有两个互斥的单选按钮的布尔字段,但我不知道如何在它们之间插入其他控件。
答案 0 :(得分: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>