2

テンプレートでは、ドロップダウン全体が次のように正しく表示されます。

{{form.deal_type}}

しかし、選択したドロップダウンのテキストだけを表示したい場合はどうすればよいでしょうか?

これは私に単なる外部キーを示しています。

{{form.deal_type.value}}
4

2 に答える 2

4

なぜこれを正確にやりたいのかわかりませんが、これを試してみてください。

ループするには:

{% 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 %}
于 2012-07-30T16:10:35.120 に答える
0

同様の問題がありました。これを解決するために、ビューから直接テンプレートに値を渡しました。だからあなたの見解では、おそらくあなたは何かの邪魔をしているでしょう

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ループを繰り返し処理する方が、オブジェクトから直接プルするよりも効率が悪いように思われました。

于 2013-02-03T18:32:37.450 に答える