在模板中使用循环值

时间:2016-05-10 21:49:41

标签: django django-templates

如何访问"价值"如果有条件?或者在django模板中不可能?

以下是我想在django中实现的例子,但它不起作用。

所以我对这一行有问题" {%if field.data == value%}"如何通过"价值"来自" for cycle"如果有条件?

最佳解决方案是什么?

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})

对不起伙计们。我只是自己解决了。当您只需添加&#34; widget = forms.Select(attrs = {&#39; class&#39;:&#39; selectpicker add-)时,自定义表单形式真的很愚蠢。我&#39;,&#39;数据实时搜索&#39;真实&#39;}) &#34;到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 }}

1 个答案:

答案 0 :(得分:1)

我认为你应该只为迭代分配一个控制变量,然后调用它上面的字段(假设&#34;值&#34;和&#34;键&#34;是字段选择的一部分),像这样:

{% 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 %}