2013-03-04 84 views
1

在表單中,如果某個字段包含任何驗證錯誤,那麼它們將設置爲空白。例如,如果我有一個名爲price的小數字段,並且它的無效值爲藍色,我想只是靜靜地將字段設置爲無。Django Forms - 如果字段包含錯誤,則將字段設置爲空白

這將用於通過查詢字符串進行搜索過濾器,所以如果有更好的解決方案,請讓我知道。

編輯2

class SearchForm(forms.Form): 
    q = forms.CharField() 
    price = forms.DecimalField(required=False) 

我想形式能夠以一種形式不會成爲無效的處理無效的字段值。例如,如果我有?q=car&price=100該表單將起作用。如果我有?q=car&price=circle,我希望表單注意到錯誤(值不是小數),但不是使表單無效,只需將該字段留空即可。

clean_*可用於驗證非字段類型特定的錯誤,是嗎? (與字段類型相關的錯誤已經被檢查並使表單失效)。如果是這樣,我應該如何去檢測這些錯誤?

我的方法在這裏可能完全錯誤 - 我基本上試圖創建搜索過濾器。

回答

1

這正是clean_field方法的用途。因此,例如在你的例子中:

class MyForm(forms.Form): 
    ... 
    def clean_price(self): 
     value = self.cleaned_data['price'] 
     if value == 'blue': 
      value = '' 
     return value 
+0

我怎樣才能捕獲正常的字段驗證錯誤(我會重置字段),所以他們不會最終使我的表單無效? – RS7 2013-03-04 21:49:09

+0

對不起,不知道你問的是我的答案已經沒有涵蓋。你能給個例子嗎? – 2013-03-04 21:52:46

+0

我編輯了我原來的問題。希望有幫助。請讓我知道,謝謝 – RS7 2013-03-04 22:03:59

相關問題