2

在模板中,我正确显示了整个 DropDown,如下所示:

{{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 的表单。将变量 deal_type 设置为等于 Object.deal_type.display_value 的数据添加到

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 回答