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をコピーしました!

エンジニアを目指す方必見!おすすめプログラミングスクール

最短でエンジニアになるには、いかに効率よく学習するかが重要です。モチベーションを維持しながら最短でエンジニアを目指すならプログラミングスクールを利用するのもおすすめです。

目次
閉じる