在模板中,我正确显示了整个 DropDown,如下所示:
{{form.deal_type}}
但是,如果我只想显示所选下拉列表的文本怎么办?
这显示我只是一个外键。
{{form.deal_type.value}}
在模板中,我正确显示了整个 DropDown,如下所示:
{{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 的表单。将变量 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 循环进行迭代会比直接从对象中提取效率低