テンプレートでは、ドロップダウン全体が次のように正しく表示されます。
{{form.deal_type}}
しかし、選択したドロップダウンのテキストだけを表示したい場合はどうすればよいでしょうか?
これは私に単なる外部キーを示しています。
{{form.deal_type.value}}
テンプレートでは、ドロップダウン全体が次のように正しく表示されます。
{{form.deal_type}}
しかし、選択したドロップダウンのテキストだけを表示したい場合はどうすればよいでしょうか?
これは私に単なる外部キーを示しています。
{{form.deal_type.value}}
なぜこれを正確にやりたいのかわかりませんが、これを試してみてください。
{% for value, text in form.deal_type.field.choices %}
{{ value }}: {{ text }}
{% if value == form.deal_type.value %}
<strong>{{ text }}</strong> <!-- THIS IS THE SELECTED ONE... -->
{% endif %}
{% endfor %}
上記のコードは説明のためのものであり、逐語的に使用する必要があるという意味ではありません。このコードは、あなたが望むようになります。
{{ form.deal_type.label_tag }}
{% for value, text in form.deal_type.field.choices %}
{% if value == form.deal_type.value %}
{{ text }}
<input type="hidden" name="deal_type" value="{{ value }}" />
{% endif %}
{% endfor %}
同様の問題がありました。これを解決するために、ビューから直接テンプレートに値を渡しました。だからあなたの見解では、おそらくあなたは何かの邪魔をしているでしょう
data = {'form' :form,}
return render_to_response('destination.html', data, context_instance = RequestContext)
データでは、deal_typeを含むフォームを渡します。Object.deal_type.display_valueと等しい変数deal_typeセットをデータに追加します。
data = {'form' :form,}
if Object.deal_type: data['deal_type'] = Object.deal_type.display_value
return render_to_response('destination.html', data, context_instance = RequestContext)
次に、テンプレートで使用できます
{% if condition_to_show_just_text %}
{{deal_type}} {{form.deal_type.as_hidden}}
{% else %}
{{form.deal_type}}
{% endif %}
この場合は無意味かもしれませんが、リストが長い場合、テンプレートでforループを繰り返し処理する方が、オブジェクトから直接プルするよりも効率が悪いように思われました。