万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

verbose_nameをformに設定する方法 Django

class UserProfile(models.Model): birthday = models.DateField(verbose_name=u'生年月日')

のようなModelがあるとして、そこにはverbose_nameを設定している。

しかし、

class UserProfileForm(forms.ModelForm):
    """ UserProfileのフォーム """
    slug_field = 'user_slug'
    now = datetime.datetime.now()
    # 10から100歳にする
    DOY = tuple(n for n in range(now.year - 100, now.year - 9))
    birthday = forms.DateField(widget=extras.SelectDateWidget(years=DOY))

のようにそのModelに対するFromを生成した時に、 デフォルトのbirthday(実際にはBirthday)がフォームに出てしまった。

django - How to add verbose_name to forms - Stack Overflow

を見ると、そこではlabelで設定する

    birthday = forms.DateField(widget=extras.SelectDateWidget(years=DOY), label=u'生年月日')

最初、勘でverbose_nameで出来るだろうと、

    birthday = forms.DateField(widget=extras.SelectDateWidget(years=DOY), verbose_name=u'生年月日')

としても出来なかったので注意。