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>
views.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 All
带复选框不会显示。如果输入for循环的单个值,则显示全部带复选框将显示。它是一个小的逻辑错误,但我没有得到这个。非常感谢帮助。
答案 0 :(得分: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>
希望这有帮助!
答案 1 :(得分: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.first
检查for循环是否在第一次迭代中,如果是,它将仅在每次迭代时显示输入一次。