Django表单字段初始strrtime值未更新

Django表单字段初始strrtime值未更新,django,forms,time,django-forms,initialization,Django,Forms,Time,Django Forms,Initialization,我有一个Django表单字段,用于一段时间,我使用time.strftime()函数将初始值设置为当前时间 使用此方法,该字段最初使用我第一次加载Django应用程序时的当前时间正确填充(通过执行python manage.py runserver)。但是,如果随后我重新加载页面,表单字段将无法更新当前时间,而是重复返回应用程序首次启动的时间。但是,如果我修改了一个Django文件,例如forms.py或views.py,那么当前时间将正确刷新 在forms.py中: class EventFo

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

使用此方法,该字段最初使用我第一次加载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()
如何使结束时间字段的初始值始终更新到当前时间

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

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

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

您需要在类的
\uuuu init\uuu()方法中设置它

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)

谢谢这起作用了。你知道为什么不能像我最初使用的那样在字段定义/属性中设置它吗?我很确定这是因为类变量只有在你第一次创建这个类的实例时才被实例化。因此,您可以重载初始化方法来更改所需内容。