SelectDateWidget没有获得正确的初始值

时间:2013-01-02 09:13:28

标签: django django-forms

我在这里使用userena,我的ProfileForm扩展了userena提供的EditProfileForm(这是一个模型表单)

这是我在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年),然后另一次刷新将使年份的选择字段为空(为什么?2012 don'甚至出现了。)

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

我的猜测是,SelectDateWidget代码可能有问题,但我也找不到任何问题,而且,我对自己的代码比其他代码更加怀疑。任何人都知道为什么会这样吗?传递的数据是正确的,我确信这一点。

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

USE_L10N = False
DATE_FORMAT = 'j  M  Y'

1 个答案:

答案 0 :(得分: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)))