2016-09-27 44 views
0

我有一个Django表单字段,一段时间,我通过使用time.strfrtime()函数将初始值设置为当前时间。Django表单字段初始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

您需要将其设置为类的__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) 
+0

谢谢!这工作。你知道为什么你不能像我最初那样将它设置在字段定义/属性中吗? – intersection

+0

我很确定它是因为类变量仅在您第一次创建此类的实例时实例化。因此,您可以重载初始化方法以更改所需内容。 –

+0

明白了 - 谢谢! – intersection