在 django 模板的下拉列表中显示已选择的项目
Show already selected item in dropdown in django template
你好,我有一个这样的下拉菜单
<select name="category" data-placeholder="select Category here" multiple
class="chosen-select" tabindex="8" required>
<option value=""></option>
<option>Transport</option>
<option>Accommodation</option>
<option>Ware House</option>
<option>Readymade</option>
</select>
我正在从这样的数据库过滤器查询中获取此下拉列表的选定元素
categories=Categories.objects.filter(vendor=uid)
当我这样循环时
{% for category in categories %}
<option value=""></option>
<option value="{{ category.category }}"{% if category.category == 'Transport' %}selected{% endif %}>Transport</option>
<option value="{{ category.category }}"{% if category.category == 'Accommodation' %}selected{% endif %}>Accommodation</option>
<option value="{{ category.category }}"{% if category.category == 'Activity' %}selected{% endif %} >Activity</option>
<option value="{{ category.category }}"{% if category.category == 'Readymade' %}selected{% endif %}>Pre Packaged Plan</option>
</option>
{% endfor %}
在这种情况下,例如,如果我在数据库中选择了 2 个选项,那么它会打印两次选项,但选择的结果是正确的。非常感谢任何帮助。
如果 categories
是您要选择的类别的列表,那么您可以将其设为列表 (category_names = [category.category for category in categories]
),并且在您的 HTML 中,不要重复在 categories
上(这将导致类别的 N 倍),而是检查每个选项是否在所选列表中:
<select ...>
<option value=""></option>
<option value="Transport" {% if 'Transport' in category_names %}selected{% endif %}>Transport</option>
<option value="Accommodation" {% if 'Accommodation' in category_names %}selected{% endif %}>Accommodation</option>
...etc
</select>
现在,如果您需要用类别名称动态填充此 <select>
,那是另一个问题,但这不是我解释这个问题的方式。
你好,我有一个这样的下拉菜单
<select name="category" data-placeholder="select Category here" multiple
class="chosen-select" tabindex="8" required>
<option value=""></option>
<option>Transport</option>
<option>Accommodation</option>
<option>Ware House</option>
<option>Readymade</option>
</select>
我正在从这样的数据库过滤器查询中获取此下拉列表的选定元素
categories=Categories.objects.filter(vendor=uid)
当我这样循环时
{% for category in categories %}
<option value=""></option>
<option value="{{ category.category }}"{% if category.category == 'Transport' %}selected{% endif %}>Transport</option>
<option value="{{ category.category }}"{% if category.category == 'Accommodation' %}selected{% endif %}>Accommodation</option>
<option value="{{ category.category }}"{% if category.category == 'Activity' %}selected{% endif %} >Activity</option>
<option value="{{ category.category }}"{% if category.category == 'Readymade' %}selected{% endif %}>Pre Packaged Plan</option>
</option>
{% endfor %}
在这种情况下,例如,如果我在数据库中选择了 2 个选项,那么它会打印两次选项,但选择的结果是正确的。非常感谢任何帮助。
如果 categories
是您要选择的类别的列表,那么您可以将其设为列表 (category_names = [category.category for category in categories]
),并且在您的 HTML 中,不要重复在 categories
上(这将导致类别的 N 倍),而是检查每个选项是否在所选列表中:
<select ...>
<option value=""></option>
<option value="Transport" {% if 'Transport' in category_names %}selected{% endif %}>Transport</option>
<option value="Accommodation" {% if 'Accommodation' in category_names %}selected{% endif %}>Accommodation</option>
...etc
</select>
现在,如果您需要用类别名称动态填充此 <select>
,那是另一个问题,但这不是我解释这个问题的方式。