ここでは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'