2

Django には、以下に示すように初期値を持つように設定された SplitDateTimeField を使用するフォームがあります。フォームを含むテンプレートを表示しようとすると、ValueError:「strftime フォーマットは raw % で終了します。」

# forms.py

class DiscountForm(Form):
    title = CharField(widget=TextInput(), required=True)
    description = CharField(widget=Textarea(), required=True)
    fineprint = CharField(widget=Textarea(), required=True)
    start = SplitDateTimeField(
        input_date_formats='%m/%d/%Y',
        input_time_formats='%I:%M %p',
        initial= lambda: dt.datetime.now(),
        required=True
    )
    end = SplitDateTimeField(
        input_date_formats='%m/%d/%Y',
        input_time_formats='%I:%M %p',
        initial= lambda: dt.datetime.now() + dt.timedelta(days=30),
        required=True
    )
    limit = IntegerField(min_value=0, initial=0, required=True)

# relevant in settings.py 

USE_I18N = False
USE_L10N = False
USE_TZ = True

DATETIME_INPUT_FORMATS = ('%m/%d/%Y %I:%M %p')
DATE_INPUT_FORMATS = ('%m/%d/%Y')
TIME_INPUT_FORMATS = ('%I:%M %p')

ここに私のトレースバックがあります: http://dpaste.org/y55eV/

どんなガイダンスも大歓迎です。ありがとうございました

4

1 に答える 1

2

引数input_date_formatsinput_time_formatsは、文字列ではなく、リストまたはタプルである必要があります (ドキュメントのSplitDateTimeFieldを参照してください)。エラーは、複数の入力形式ではなく、文字を繰り返し処理していることが原因である可能性があります。

コードを次のように変更してみてください。

start = SplitDateTimeField(
    input_date_formats=('%m/%d/%Y',),
    input_time_formats=('%I:%M %p',),
    initial= lambda: dt.datetime.now(),
    required=True
)
end = SplitDateTimeField(
    input_date_formats=('%m/%d/%Y',),
    input_time_formats=('%I:%M %p',),
    initial= lambda: dt.datetime.now() + dt.timedelta(days=30),
    required=True
)
于 2012-07-05T21:28:50.797 に答える