django - 在 django 模板的下拉列表中显示已选择的项目
问题描述
嗨,我有一个这样的下拉菜单
<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>
使用类别名称动态填充它,那是另一个问题,但这不是我解释这个问题的方式。
推荐阅读
- android - 如何将 Flutter 应用程序连接到 Wordpress?
- java - 具有不同类的单个类中的多个 @oneToMany 关联的持久性问题
- php - 如何将事件帖子添加到现有的帖子表中,以便在 WP 后端将其作为帖子进行查询
- directx - DirectX:无法从 CMO 渲染模型
- php - 如何修复 PHP Parse 错误:语法错误,意外的“?” 在第 500 行的 vendor\laravel\framework\src\Illuminate\Foundation\helpers.php
- pytorch - 高分辨率图像的对象检测推理在 cpu 上花费大量时间
- scala - 当一个纱线应用程序失败时,spark-submit 的退出代码在 unix 脚本中仍然是 0
- javascript - 检索二维数组的选定列
- xcode - 以编程方式“迅速”执行 segue
- android - 如何解决“”[xX][mM][lL]“不允许”错误