2013-06-06 22 views
0

我想驗證日期與兩個不同的輸入form.I不知道我做錯了。日期驗證給出錯誤「strftime」未定義「

forms.py

class ReportForm(forms.ModelForm): 
    manual_date = forms.DateField(input_formats=['%m/%d/%Y','%d/%m/%Y'], 
         widget=forms.DateInput(attrs={'size':'15','id':'datepicker'},format=["%m/%d/%Y","%d/%m/%Y"])) 
    manual_time = forms.TimeField(input_formats=['%H:%M','%I:%M %p'], 
         widget=forms.TimeInput(attrs={'size':'8','class':'time_field'},format=["%H:%M","%I:%M %p"])) 

    def clean(self): 
     cleaned_data = self.cleaned_data 
     manual_date = cleaned_data.get('manual_date') 
     manual_time = cleaned_data.get('manual_time') 

     if manual_date != strftime('%d %b %Y') and strftime('%b %d %Y'): 
      raise ValidationError('Enter a valid date') 
     return cleaned_data 

模板:

{{ ReportForm.manual_date }}{{ ReportForm.manual_date.errors }} 
{{ ReportForm.manual_time }}{{ ReportForm.manual_time.errors }} 

我得到這個錯誤「全局名稱'strftime' is not defined",我當然不知道我做的方法是正確的

。我想驗證這兩種格式的日期和時間。如果用戶選擇dd/mm/yyyy格式,它應該以該格式驗證,如果選擇的日期是mm/dd/yyyy它應該以該格式驗證日期。請指導我如何在clean()方法中實現。

回答

1

strftime是在datetime對象上找到的方法,可以將它們轉換爲字符串。

你的錯誤很簡單:沒有定義。如果你打開一個python shell並輸入Royal,你會期望一個錯誤嗎?一樣。


在調用clean時,datetime對象已經被構造。此時沒有輸入類型驗證 - 它已被轉換爲日期時間。

+0

其實皇室,現在我看你是檢查日期格式。 input_formats應該自動驗證。 –