在客户端,您可以使用一些 js,例如(使用 jQuery):
$('input[name=your_radio_field_name]').change(function() {
switch ($(this).val()) {
case 'option1_value':
$('input[name=extra_field_for_option2], input[name=extra_field_for_option3]').hide();
break;
case 'option2_value':
$('input[name=extra_field_for_option2]').show();
$('input[name=extra_field_for_option3]').hide();
break;
// and so on ...
}
})
在服务器端,您可以拥有这样的字段验证功能:
def clean_extra_field_for_option2(self):
if self.cleaned_data.get('your_radio_field_name') != 'option_2_value':
return None
return self.cleaned_data.get('extra_field_for_option2')
def clean_extra_field_for_option3(self):
if self.cleaned_data.get('your_radio_field_name') != 'option_3_value':
return None
return self.cleaned_data.get('extra_field_for_option3')
当然,如果你有很多这种情况,你应该先尝试像这样简单的东西,然后重构。