小编Luf*_*ufa的帖子

Django表单中的日期时间值(初始和提交的格式不同)

出于某种原因,我使用自定义HTML代码来显示表单.我的表单输入获取初始值(日期),并在提交后显示相同的表单.

但提交后,输入没有先前选择的值(只是空).

{{ Form.Fileld.value|date:"Y-m-d" }}在temlate中使用以获取初始值和提交的值.

似乎初始值和提交值的格式不同:初始值为"datetime",提交后为"string".

这是我的简单测试:

形成

class ShowStartEndDateForm(forms.Form):
    start_date = forms.DateField(initial=date.today().replace(day=1), 
        label="Start", 
        widget=forms.DateInput(format='%Y-%m-%d'), 
        input_formats=['%Y-%m-%d'])
    ...
Run Code Online (Sandbox Code Playgroud)

视图

if request.method == 'POST':
    form_date = ShowStartEndDateForm(request.POST)

    if form_date.is_valid():
        form_was_submitted = True
        cd = form_date.cleaned_data
        operator = cd['operators']

        days=[]
        for day in range(0,(cd['end_date']-cd['start_date']).days+1):
            days.append(cd['start_date']+relativedelta(days=+day))

else:
    form_date = ShowStartEndDateForm()

return render_to_response('epay.html', locals(),
    context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

模板

<!- HTML FORM here 
|classname is my custom template filter.
-->
Date1: {{ form_date.start_date.value|date:"Y-m-d" }} \
({{ form_date.start_date.value|classname }})
Date2: {{ form_date.start_date.value }}
Run Code Online (Sandbox Code Playgroud)

首先在浏览器中调用:

Date1: 2013-10-01 (date) …
Run Code Online (Sandbox Code Playgroud)

django django-forms

6
推荐指数
1
解决办法
3845
查看次数

标签 统计

django ×1

django-forms ×1