2012-07-05 16 views
2

在Django中,我使用的SplitDateTimeField被設置爲初始值,如下所示。當嘗試查看包含表單的模板時,我得到ValueError:「strftime格式以raw%結尾。」當DATE_INPUT_FORMATS和TIME_INPUT_FORMATS被設置時,Django - 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/

任何指導,是極大的讚賞。謝謝

+0

哪條線正好拋出異常? – 2012-07-05 21:19:18

+0

在我的模板中,當我嘗試通過執行加載「開始」表單域:{{form.start}} – 2012-07-05 21:20:04

回答

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 
) 
+0

感謝您的建議。我其實已經嘗試過了!不過,我在settings.py中的輸入格式變量中的字符串之後添加了逗號。那樣做了。 – 2012-07-05 21:37:42

+1

是的,逗號把它變成一個元組。只是添加'('和')'不會執行,因爲它仍然是一個字符串。 – 2012-07-05 21:42:04

相關問題