2011-06-09 51 views
1

我想在DateField的TextInput窗口小部件中顯示no或空值的替代文本(讓我們說'any')。Django窗體中的替代文本DateField中沒有值

我的想法是表單字段的初始值設置爲「任何」,然後檢查其clean_<field>()方法對這個初始值和清潔回None

date_field = forms.DateField(initial='any', required=False) 

def clean_date_field(self): 
    data = self.cleaned_data['date_field'] 
    if data == 'any': 
     data = None 
    return data 

不幸的是,clean_<field>()方法是永遠所以我認爲是因爲某些日期格式驗證事先發生並且提出了ValidationError,這將阻止從未被調用過的clean_<field>()方法。

有沒有簡單的方法來顯示None替代表單字段值使用DateField

任何提示表示讚賞。

回答

2

您可以創建自定義字段並覆蓋to_python方法。 to_python將在字段清理之前調用,並且您可以在那裏將any轉換爲None值。

def to_python(self, value): 
    if value == 'any': 
     value = None 
    return super(CustomField, self).to_python(value) 

您也可以使用HTML5 placeholder