2013-01-02 48 views
0

我使用userena这里正确的初始值和我ProfileForm扩展EditProfileForm(这是一个模型形式)userena提供SelectDateWidget没有得到

这是我在forms.py

class ProfileForm(EditProfileForm): 
    contact = forms.CharField(label="Contact Number") 
    birthday = forms.DateField(widget=SelectDateWidget(years=reversed(range(1930, datetime.date.today().year)))) 
    gender = forms.ChoiceField(widget=forms.RadioSelect, choices=GENDER, label="Gender") 

    class Meta: 
     model = get_profile_model() 
     exclude = ['mugshot', 'privacy', 'user'] 

    def save(self, force_insert=False, force_update=False, commit=True): 
     [...] 

代码从呈现的页面中,我有日期和月份显示正常,但年份将在页面的第一次加载中显示2012年(正确的一年是1981年),然后再次刷新将使年份的选择字段为空(whyyy?2012甚至不显示了)。

我很确定传入的数据是正确的,因为如果我删除SelectDateWidget,它显示正常。另外,我检查了传入表单的数据类型,并将其正确键入为具有正确值的datetime.date。

我的猜测是,在SelectDateWidget代码中可能有些问题,但是我也找不到任何问题,再加上,我比其他人更怀疑自己的代码。任何人都知道这是为什么发生?传入的数据是正确的,这是我确定的。

编辑:如果有帮助,我的settings.py包含这些

USE_L10N = False 
DATE_FORMAT = 'j M Y' 

回答

0

通过去除reversed问题解决了:

birthday = forms.DateField(widget=SelectDateWidget(years=reversed(range(1930, datetime.date.today().year)))) 

,取而代之的是:

birthday = forms.DateField(widget=SelectDateWidget(years=range(datetime.date.today().year, 1930, -1)))