Djangoのchoicesフィールドのリストを取得する

この記事ではDjangoのModelで定義したchoicesをviewで取得する方法をご紹介します。

viewで取得したあとはロジックに使用したり、テンプレートに渡したりできます。

まずは、モデルで以下のようにchoicesフィールドを定義します。

class Tag(BaseModel):

    type_choices = (
        ('', 'タグを選択してください'),
        ('tag_a', 'タグA'),
        ('tag_b', 'タグB'),
    )
    type = models.CharField(
        verbose_name='タグタイプ',
        max_length=30,
        choices=type_choices,
    )

    value = models.CharField(
        verbose_name='タグの値',
        max_length=350
    )

viewでは以下のように

  • モデルから取得
  • インスタンスから取得

することができます。

# Tagモデルから取得
tags = Tag._meta.get_field('type').choices

# Tagインスタンスから取得
tags = tag_instans._meta.get_field('type').choices

取得したchoicesのリストをテンプレートにリストとして渡したい場合は以下のようにリストに変換して渡すことができます。

tag_list = [
    {'type':type, 'value':value} for type, value in Tag._meta.get_field('type').choices
]
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次