(django1.8, python2.7)
templetes で {{ form.prefecture.value }}
と書くと 東京
とかではなく tokyo
とか表示される問題。
form.get_fieldname_display
とか色々やって表示されなかったので この記事 を参考に templatetags 使ってやってみた
(参考サイトのやつがそのままで動かなかったのでちょっと思考錯誤した)
hoge/forms.py
from django import forms from localflavor.jp.jp_prefectures import JP_PREFECTURES class HogeForm(forms.Form): prefecture = forms.ChoiceField(choices=JP_PREFECTURES, initial='tyokyo')
hoge/templatetags/data_verbose.py
from django import template register = template.Library() @register.filter def choice_field_display(bound_field): value = bound_field.value() field = bound_field.field return hasattr(field, 'choices') and dict(field.choices).get(value, '') or value
templates/hoge.html
{% load data_verbose %} <p> 都道府県: {{ form.prefecture|choice_field_display }} </p>
こんな感じで 東京
とか日本語で表示されるようになった。