読者です 読者をやめる 読者になる 読者になる

牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Django の確認フォームで localflavor を使った都道府県を templates で表示させるメモ

Django

(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.template.base import Library

register = Library()


@register.filter
def choice_field_display(boundField):
    value = boundField.value()
    field = boundField.field
    return hasattr(field, 'choices') and dict(field.choices).get(value, '') or value

templates/hoge.html

<p>
  都道府県: {{ form.prefecture|choice_field_display }}
</p>

こんな感じで 東京 とか日本語で表示されるようになった。

参考