0

我在这里使用 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 年甚至不显示再上来)。

我很确定传入的数据是正确的,因为如果我删除 SelectDateWidget,它会显示得很好。此外,我检查了传递到表单中的数据类型,并且正确键入了 datetime.date 和正确的值。

我的猜测是 SelectDateWidget 代码中可能有问题,但我也找不到任何问题,另外,我对自己的代码比其他的更怀疑。有谁知道为什么会这样?传入的数据是正确的,我敢肯定。

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

USE_L10N = False
DATE_FORMAT = 'j  M  Y'
4

1 回答 1

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)))
于 2013-01-02T12:40:34.327 回答