我有一个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")})
但是有更好的方法吗?幕后发生了什么,当前时间不会自动更新?
答案 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)