Django表单字段初始strfrtime值不更新

时间:2016-09-27 00:19:13

标签: django forms time django-forms initialization

我有一个Django表单字段,暂时使用time.strfrtime()函数将初始值设置为当前时间。

使用此方法,当我第一次加载Django应用程序时(通过执行python manage.py runserver),该字段最初使用当前时间正确填充。但是,如果我重新加载页面,表单字段将无法更新当前时间,而是反复吐出应用程序首次启动的时间。但是,如果我修改了我的一个Django文件,例如forms.py或views.py,那么正确刷新当前时间。

在forms.py中:

class EventForm(ModelForm):

      end_time = forms.TimeField(label="Current time",   initial=strftime("%I:%M %p"))

在views.py中:

def index(request):

    event_form = EventForm()

如何让end_time字段的初始值始终更新为当前时间?

注意:我知道我可以通过将初始数据传递给我的event_form = EventForm()代码来解决这个问题,例如:

event_form = EventForm(initial={'end_time':strftime("%I:%M %p")})

但是有更好的方法吗?幕后发生了什么,当前时间不会自动更新?

1 个答案:

答案 0 :(得分:2)

您需要在类的__init__()方法中设置它。

from time import strftime
from django import forms


class EventForm(forms.Form):
    end_time = forms.TimeField(label='Current time')

    def __init__(self, *args, **kwargs):
        kwargs.update(initial={
            'end_time': strftime('%I:%M %p')
        })

        super(EventForm, self).__init__(*args, **kwargs)