如何在SelectDateWidget中显示字段的当前日期?

时间:2014-04-03 01:06:43

标签: django django-forms django-templates

我的一个表单是编辑表单。我试图让用户编辑一些数据,包括他们现有的生日。但是,当他们进入编辑页面时,所有输入字段都有文本已经指示该字段的当前值。

但是,即使已经保存了日期,selectdatewidget也是完全空白的。用户总是必须将日期更改回原来的生日并保存,这很麻烦。

有没有办法解决这个问题?

这是我的表单代码:

class ProfileForm(forms.ModelForm):
    today = int(date.today().year)
    BIRTH_YEAR_CHOICES = (
        [i for i in reversed(range(1900,today))]
    )
    birthday = forms.DateField(widget = extras.SelectDateWidget(years=BIRTH_YEAR_CHOICES), required=False)
    phone = forms.IntegerField(error_messages={'invalid': 'Numbers only please'}, required=False)
    class Meta:
        model = UserProfile
        fields = ('avatar','user','gender','phone','accomplishments','description',)
        exclude = ('user','birthday')

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以覆盖ProfileForm的__init__方法,并为所有字段设置初始值:

def __init__(self,*args, **kwargs):
    super(self.ProfileForm, self).__init__(*args, **kwargs)
    self.fields['birthday'].initial = whatever_you_want

或者您可以在创建表单时及时传递初始值:

form = ProfileForm(initial={'birthday': 'your_date'})