Я предлагаю вам разделить это на две (или более) отдельные формы 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>