この記事では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
]
コメント