【问题标题】:<option {% if 'condition.' == 'condition....'%}selected{%endif%}> </option> not working in Django custom select<option {% if '条件。' == 'condition....'%}selected{%endif%}> </option> 在 Django 自定义选择中不起作用
【发布时间】: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}} 它包含类别模型中存在的所有类别。 {“电子产品”、“衣服”、“配饰”等}
  • 那么你必须使用ineditsub_obj.category_name in data.category_name。查看我的更新答案
  • 还是不行

标签: django python-3.x select jinja2 option


【解决方案1】:

您的代码可以简化为 ::

    <select class="form-control" id="" name="cat_name" required>
        {% for data in cat %}
            <option value="{{data.id}}"
                {% if editsub_obj and editsub_obj.category_name in data.category_name %} 
                   selected
                {%endif%}>
                {{data.category_name}}
            </option>
        {% endfor %}
   </select>

【讨论】:

  • 是的,但是,即使值匹配,也不会出现所选内容。
  • 查看渲染后的html源代码,看看是否在任何选项中添加了selected
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 2013-02-19
  • 1970-01-01
相关资源
最近更新 更多