0

template.html

<tr><td>
    {% if place %}                                
      <input type="checkbox" id="select_all"/>Display all<br />
      <hr style="width: 150px;margin: 8px 0;">
      {% for value in place %}
      {{ value }}
      {% endfor %}
    {% endif %}</td></tr>
<tr><td>{% include "buttons/addalist.html" %} {% include "buttons/save.html" %}</td></tr>

ビュー.py

def type_list(request,type_id):
    user = request.user
    try:
        type_list = Types.objects.get(user=user.id, id=type_id)
    except:
        return redirect('incident.views.incident_types')
    if request.method == 'POST':
        report_type = TypeSettingsForm(request.POST)

        if 'title' in request.POST and report_type.is_valid():
            if request.POST['title'].strip():
                result = report_type.save(commit=False)
                result.user = user
                result.is_active = True
                result.parent_type_id = type_id
                result.save()
        else:
            place = TypeSelectionForm(type_id, request.POST)
            if types.is_valid() and 'status' in request.POST:
                types.save(type_id, request.POST)
                type_list.is_active = eval(request.POST['status'])
                type_list.save()

                return redirect('incident.views.incident_types')
    place = TypeSelectionForm(type_id)

    return render(request, 'incident/type_list.html',
        {
            'about_menu': True,
            'type_list': type_list,
            'place':place
    })

addalist ボタンをクリックすると、値が保存され、テンプレートに表示されます。

しかし、最初は for ループから値が表示されていない場合、Display Allwith チェック ボックスは表示されません。 for ループから単一の値が入力された場合、 Display All with チェック ボックスが表示されます。これを手に入れました。ヘルプは大歓迎です。

4

2 に答える 2

1

count_check_boxesフォームの選択肢の数をカウントする変数をビュー内に作成し、テンプレート内でそれをテストできます。

def type_list(request,type_id):
    ...
    place = TypeSelectionForm(type_id)
    count_check_boxes = len(place.fields['checkbox_field'].choices)
    return render(request, 'incident/type_list.html',
        {
            'about_menu': True,
            'type_list': type_list,
            'place':place,
            'check_boxes_count':check_boxes_count
    })

そしてあなたのテンプレートで:

<tr><td>
    {% if place %}                                
      {%if check_boxes_count > 0%}
      <input type="checkbox" id="select_all"/>Display all<br />
      <hr style="width: 150px;margin: 8px 0;">
      {%endif%}
      {% for value in place %}
      {{ value }}
      {% endfor %}
    {% endif %}</td></tr>
<tr><td>{% include "buttons/addalist.html" %} {% include "buttons/save.html" %}</td></tr>

お役に立てれば!

于 2013-05-22T18:10:53.913 に答える
0
<tr><td>
    {% if place %}      
        {% for value in place %}
            {% if forloop.first %}
            <input type="checkbox" id="select_all"/>Display all<br />
            <hr style="width: 150px;margin: 8px 0;">
            {% endif %}
            {{ value }}
        {% endfor %}
    {% endif %}</td></tr>
<tr><td>{% include "buttons/addalist.html" %} {% include "buttons/save.html" %}</td></tr>

forloop.firstfor ループが最初の反復であるかどうかをチェックする使用すると、反復全体で ​​1 回だけ入力が表示されます。

于 2013-05-22T12:01:49.533 に答える