Django - 过滤字段的模板表单日期

时间:2012-04-23 15:09:28

标签: django django-forms django-templates django-template-filters

视图

def editor(request):
    form = SessionForm(initial={
        'end_time': datetime.datetime.now(),
    })

    if request.method == 'POST':
        form = SessionForm(request.POST)
        if form.is_valid():
            form.save()

    return render_to_response('planner/editor.html',
        {'form': form}, context_instance=RequestContext(request),)

此视图显示表单并在出错时重新显示,因此有两种情况:

  1. 初始化
  2. 出错
  3. 在模板中,我正在尝试使用日期过滤器

    显示字段end_time

    测试1

      <div>End value: {{ form.end_time.value }}</div>
      <div>End value filtered: {{ form.end_time.value|date:"Y-m-d" }}</div>
    

    案例1(初始化)

      

    结束值:2012-04-23 12:30:00
      已过滤的最终价值:2012-04-23

    案例2(出错时)

      

    结束值:2012-04-23 12:30:00
      已过滤的最终值:

    测试2

    现在让我们尝试删除.value

    end_time
      <div>End value: {{ form.end_time.value }}</div>
      <div>End value filtered: {{ form.end_time|date:"Y-m-d" }}</div>
    

    案例1(初始化)

      

    结束值:2012-04-23 12:30:00
      已过滤的最终值:

    案例2(出错时)

      

    结束值:2012-04-23 12:30:00
      已过滤的最终价值:2012-04-23

    正如你所看到的那样反过来 怎么解释这个?

1 个答案:

答案 0 :(得分:3)

使用

{{ form.instance.end_time|date:"Y-m-d" }}

而不是

{{ form.end_time|date:"Y-m-d" }}

似乎在两种情况下都有效