2011-10-07 50 views
0

我有以下形式:如何防止Django接受無效日期並進行轉換?

class GuaranteesForm(forms.ModelForm): 
    birth_date = forms.DateField(input_formats=['%d/%m/%Y'], required=True) 

但是,如果用戶插入一個無效的日期,如:13/13/1999而不是拋出一個異常,Django會通過執行日期和月份域的模數轉換日期,並且順理成章地增加了數月和數年。在這個例子中,由於月份高於12,所以持續的日期是13/01/2000。

我寧願得到一個InvalidFormException,有什麼辦法來防止這種行爲?

我在Jython(DOJ)上使用Django。

我已經通過clean_birth_date實現了一個解決方案,但我覺得這很難看。我正在尋找的是一種防止這種行爲與日期一般的方法。

+1

你可以寫你自己的清潔方法? def clean_birth_date(self):做的東西 –

+0

我已經這樣做了,但對我而言,默認行爲接受第13個月和第60天似乎很愚蠢。 – Sirs

回答

1

cleaning a specific form field時,您可以手動引發異常。

+0

我已經這樣做了,但我不太喜歡它。我正在尋找更通用的東西。 – Sirs

+0

那麼既然沒有更清潔的解決方案可用,我會把你的答案當成好的答案。 – Sirs