2011-07-12 103 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