0

2 つの異なる入力フォームで日付を検証しようとしています。間違っているかわかりません。

フォーム.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()メソッドで実装する方法を教えてください.

4

2 に答える 2

1

strftime日時オブジェクトにあるメソッドで、それらを文字列に変換します。

エラーは非常に単純です。定義されていません。Python シェルを開いて Royal と入力した場合、エラーが発生すると思いますか? 同じこと。


が呼び出されるまでcleanに、datetime オブジェクトは既に構築されています。この時点では、入力タイプの検証はありません。すでに日時に変換されています。

于 2013-06-06T05:16:21.760 に答える