Django: Select option in template

2019-02-03 07:20发布

问题:

In my Django template, I am using the list of objects in a drop down menu. I am processing it based on the selection.

The HTML Template:

<select id="org" name="org_list" onChange="redirectUrl()">
  <option  value="" selected="selected">---SELECT---</option>
  {% for org in organisation %}
   <option value="{{org.id}}">{{org.name|capfirst}}</option>
  {% endfor %}
</select>

The problem is that when I am selecting the value from the drop down menu, I am getting the contents which belong to the selection. Since the attribute selected="selected" which only fixes to the "---SELECT---" element, unless I put the selected="selected" in

<option value="{{org.id}}" selected="selected">{{org.name|capfirst}}</option>

In these organisation, the last iterated element is only being fixed with drop down. But I want the selected element to be displayed in the drop down menu.

How can I solve this issue?

回答1:

You'll want to pass the currently selected org into the view, maybe as current_org so that when you're iterating through the orgs you can compare with the current one to determine whether or not to select it, like:

{% for org in organisation %}
   <option value="{{org.id}}"
       {% if org == current_org %}selected="selected"{% endif %}>
       {{org.name|capfirst}}
   </option>
{% endfor %}