【发布时间】:2011-10-03 11:14:05
【问题描述】:
我有一个大的 django 表单。它有很多数据取决于所选择的字段。
例如:
你有车吗?是/否下拉框。
如果是,我想显示附加字段 make/model/year/cc 等
如果不是,我想把它们隐藏起来。
最好的方法是什么?使用 jquery 的简单显示/隐藏 div 还是我应该做的更好?
【问题讨论】:
我有一个大的 django 表单。它有很多数据取决于所选择的字段。
例如:
你有车吗?是/否下拉框。
如果是,我想显示附加字段 make/model/year/cc 等
如果不是,我想把它们隐藏起来。
最好的方法是什么?使用 jquery 的简单显示/隐藏 div 还是我应该做的更好?
【问题讨论】:
是的,您应该在客户端使用带有 JQuery 的简单显示/隐藏。
然后在服务器端,您需要在表单的 clean 方法中进行条件验证,如果您还希望某些字段必填仅在选择其他内容时。
例如:
class MyForm(Form):
...
def clean(self):
cleaned_data = self.cleaned_data
has_car_required_fields = ['foo', 'bar', 'baz']
if cleaned_data.has_key('has_car') and cleaned_data['has_car']:
for field_name in has_car_required_fields:
if not cleaned_data.has_key(field_name) or not cleaned_data[field_name]:
self._errors[field_name] = ErrorList([_(u'This field is required')])
return cleaned_data
【讨论】: