pythonのDjangoについて質問です。
辞書型の変数をtemplate内で表示する方法がうまくいきません。
models.py
class Task(models.Model):
STATUS_CHOICES = [(1, '未選択'),(2, '選択'),(3, '実行')]
status = models.IntegerField(choices=STATUS_CHOICES, default=1)
views.py
tasks = Task.objects.all()
index.html
{% for task in tasks %}
{{STATUS_CHOICES.task.status}}
{% endfor %}
実現したい動作としては、
task毎の辞書型のkeyを取得して、その値を表示したいと考えています。
どこが間違っているでしょうか?
追加:
実現したい動作について詳しくご説明いたしますと、
例えば、html上で、タスク管理アプリのようなものを想定してまして、
実際にはmodels.pyに
title = CharField(max_length=200)
が入っていて、
例えばなのですが、これをhtml上でfor文で繰り返そうとすると
{% for task in tasks %}
{{task.title}}
{% endfor %}
のようにするとtasksからtaskにどんどんfor文で代入されていって、titleフィールドが一覧表示されていくのと同じかんじで、
今回も、taskのstatusフィールドのKey(1なのか、2なのか、3なのか)を取得して
「1ならその値である未選択、2なら選択、3なら実行」と、html上には文字列だけつまり未選択か選択か実行かだけを表示させたいです。
html表示イメージ
(1,2,3は各Recordのイメージで表示は考えてないです)
1 未選択
2 選択
3 選択
追記で試してみたことなのですが、
view.pyの中に
z = Task.STATUS_CHOICES
と書いて、render()してあげて、html上で{{z}}とすると
[(1, '未選択'),(2, '選択'),(3, '実行')]と表示されてしまいます。
ここから、{{z.2}}と例えばしてあげると、
(3, '実行')
が表示されました。
ここから、{{z.2.3}}としてみても、「実行」が表示されず何も表示されません・・
長くなりましたが、
実現したいこととしては、これをfor文の中で実現したいです。
回答2件
あなたの回答
tips
プレビュー