2

在 Django 中,我有一个使用 SplitDateTimeField 的表单,该表单设置为具有如下所示的初始值。当尝试查看包含表单的模板时,我得到 ValueError:“strftime 格式以原始 % 结尾。”

# 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 回答