2011-07-12 106 views
1

我有一个很大的django窗体。它有很多数据取决于选择的字段。Django窗体选择变化

例如:

你有车吗? YES/NO下拉框。

如果是的话,我想说明的其他字段品牌/型号/年/立方厘米等等等等

如果没有,我想保持它们隐藏起来。

这是什么最好的方法?一个简单的显示/隐藏div使用jquery或有更好的,我应该做的?

+1

我这样做与jQuery。 – Marcin

回答

2

是的,你应该在客户端使用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 
+0

你是多数民众赞成在我打算做什么。看起来我正沿着正确的方向思考(换一种方式)欢呼! – Mark