Короткий ответ: для этого требуется сочетание форм CSS, javascript и django.
Форма
Шаг 1 - создание формы с условной проверкой для моего чистого метода.
from django import forms
from django.utils.translation import ugettext as _
from django.forms.widgets import RadioSelect, Textarea, CheckboxSelectMultiple
from django.utils.safestring import mark_safe
class FormContact(forms.Form):
"""
The contact form
"""
choice_a = forms.ChoiceField(
label=_(u' '),
choices=(
(1, mark_safe(_(u'First Option'))),
(0, mark_safe(_(u'Second Option'))),
),
widget=RadioSelect,
initial=1
)
show_if_choice_1 = forms.CharField(
label=_(u'Choice 1 text box')
)
show_if_choice_2 = forms.CharField(
label=_(u'Choice 2 text box')
)
def clean(self):
super(forms.Form, self).clean()
if 'choice_a' in self.cleaned_data :
if self.cleaned_data['choice_a'] == '1':
if self.cleaned_data['show_if_choice_1'] == '' :
self._errors['show_if_choice_1'] = self.error_class([_(u'Please Fill out choice 1 text box.'),])
if self.cleaned_data['choice_a'] == '2':
if self.cleaned_data['show_if_choice_2'] == '' :
self._errors['show_if_choice_2'] = self.error_class([_(u'Please fill out choice 2 box'),])
return self.cleaned_data
JS и CSS
пишут некоторые JavaScript + CSS, чтобы показать скрытые поля на основе значения условного поля.
Примечание: если вам нужно больше указаний, просто скажите мне, я не хотел бы тратить вечность, набирая, если вы быстро получили указатель.