我的一个表单是编辑表单。我试图让用户编辑一些数据,包括他们现有的生日。但是,当他们进入编辑页面时,所有输入字段都有文本已经指示该字段的当前值。
但是,即使已经保存了日期,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')
谢谢!
答案 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'})