【发布时间】:2020-02-12 18:53:56
【问题描述】:
我将两个对象 'editsub_obj' 和 'cat' 两个键值对传递给模板。 主要目的是当两个对象列表中的名称匹配但代码不起作用时,保持选项标记处于选中状态。
<select class="form-control" id="" name="cat_name" required>
{% if not editsub_obj %}
{% for data in cat %}
<option value="{{data.id}}">{{data.category_name}}</option>
{% endfor %}
{% else %}
{% for data in cat %}
{% if editsub_obj.category_name == data.category_name %}
<option value="{{data.id}}" selected>{{data.category_name}}</option>
{% else %}
<option value="{{data.id}}">{{data.category_name}}</option>
{% endif %}
{% endfor %}
{% endif %}
</select>
预期:
selected 应该与两个对象列表中的 category_name 匹配。
实际:
没有一个选项显示为选中状态。
【问题讨论】:
-
为了调试尝试在模板中显示
{{editsub_obj.category_name}}和{{data.category_name}}的值,检查它们是否相等 -
{{ editsub_obj.category_name}} 将只有一个值,只要点击了编辑按钮,我们就假设“衣服”
-
{{ data.category_name}} 它包含类别模型中存在的所有类别。 {“电子产品”、“衣服”、“配饰”等}
-
那么你必须使用
in即editsub_obj.category_name in data.category_name。查看我的更新答案 -
还是不行
标签: django python-3.x select jinja2 option