【问题标题】:Use cycle for value in template在模板中使用循环值
【发布时间】:2016-09-06 01:59:54
【问题描述】:

如何在 if 条件下访问“值”?还是在 django 模板中不可能?

这是我希望在 django 中实现的示例,但它不起作用。

所以我对这一行“{% if field.data == value %}”有问题如何将“值”从“for循环”传递到if条件?

什么是最好的解决方案?

template file
{% for field in form1 %}                                   
    <div class="row pad-col i-l">
        {{ field.errors }}
        <div class="col-sm-5 text-right">
            <label for="{{ field.id_for_label }}">
                {{ field.label }}
            </label>
        </div>
        {% if field|field_type == 'Select' %}
            <div class="col-sm-7 a-select">
                <div class="a-m">
                    <select class="selectpicker add-i" id="{{ field.id_for_label }}" data-live-search="true" name="{{ field.name }}" tabindex="-98">
                        {% for value, key in field.field.choices %}
                            {% if field.data == value %}
                            <option value="{{ value }}" selected>{{ key }}</option>
                            {% else %}
                            <option value="{{ value }}">{{ key }}</option>
                            {% endif %}
                        {% endfor %}
                    </select>
                </div>
            </div>
        {% else %}
            <div class="col-sm-7">
                {{ field }}
            </div>
        {% endif %}
    </div>
{% endfor %}


views.py file
def add_item(request):
    form1 = AddForm()
    if request.method == 'POST':
        form1 = AddForm(data=request.POST)
        if form1.is_valid():
            form1.save()
            return HttpResponse('good')
    return render(request, 'add_item.html', {'form1': form1})

对不起各位。我自己解决了。当您可以添加 "widget=forms.Select(attrs={'class': 'selectpicker add-i', 'data-live-search': 'true'})" 到 forms.py 文件中的表单字段,所有验证都正常工作。

而不是这样:

<select class="selectpicker add-i" id="{{ field.id_for_label }}" data-live-search="true" name="{{ field.name }}" tabindex="-98">
   {% for value, key in field.field.choices %}
      {% if field.data == value %}
        <option value="{{ value }}" selected>{{ key }}</option>
      {% else %}
      <option value="{{ value }}">{{ key }}</option>
      {% endif %}
      {% endfor %}
</select>

你只要写这个:

{{ field }}

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    我认为您应该只为迭代分配一个控制变量,然后调用其上的字段(假设“值”和“键”是字段选择的一部分),如下所示:

    {% for vfield in field.field.choices %}
       {% if field.data == value %}
          <option value="{{ vfield.value }}" selected>{{ vfield.key }}</option>
       {% else %}
          <option value="{{ vfield.value }}">{{ vfield.key }}</option>
       {% endif %}
    {% endfor %}
    

    【讨论】:

    • 我需要访问第二行的“值”。在 if 条件下。
    • 请更新您的问题,提供有关此字段选择的更多代码,以便我们准确了解您的需求并为您提供帮助
    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多