Это сводит меня с ума. Я запустил свою логику в оболочке, и список, который я заполняю, содержит все значения, которые должны быть переданы в шаблон, но при визуализации шаблона он отображает только первый проход итерации each_role
Оболочка показывает 8 объектов, помещаемых в список, и все, что я делаю, это передаю это для визуализации в шаблоне. Пользователь, которого я использую для обоих тестов, - это мой пользователь-администратор, которому назначены роли «финансы» и «ИТ», поэтому он показал все 8 объектов. Первые 5 объектов - это объекты «ИТ», а остальные 3 - «Финансы».
Есть ли причины для такого поведения, и почему оно не будет отображать все строки на веб-странице?
Я приложил изображение фактической страницы. Благодарю вас!
Изображение веб-страницы
Shell
>>> for each_role in all_roles:
... if each_role in user_roles:
... list_of_reqs = RequisitionLine.objects.filter(assistance=each_role.id)
... for line in list_of_reqs:
... parent = line.parent_req
... if parent in req_header_list:
... continue
... else:
... req_header_list.append(parent)
... for i in range(len(req_header_list)):
... hold_line_count = RequisitionLine.objects.filter(Q(parent_req=req_header_list[i]) & Q(assistance=each_role.id))
... for j in hold_line_count:
... req_header_line_list.append(j)
... print(j)
...
RequisitionLine object (30)
RequisitionLine object (32)
RequisitionLine object (33)
RequisitionLine object (34)
RequisitionLine object (39)
RequisitionLine object (29)
RequisitionLine object (37)
RequisitionLine object (38)
>>>
>>> req_header_line_list
[<RequisitionLine: RequisitionLine object (30)>, <RequisitionLine: RequisitionLine object (32)>, <RequisitionLine: RequisitionLine object (33)>, <RequisitionLine: RequisitionLine object (34)>, <RequisitionLine: RequisitionLine object (39)>, <RequisitionLine: RequisitionLine object (29)>, <RequisitionLine: RequisitionLine object (37)>, <RequisitionLine: RequisitionLine object (38)>]
>>>
Views.py
def assistance_list(request):
req_header_list = []
req_header_line_list = []
user = CustomUser.objects.get(username=request.user)
all_roles = UserRoles.objects.all()
user_roles = user.roles.all()
for each_role in all_roles:
if each_role in user_roles:
# for u_role in user_roles:
# if each_role == u_role:
list_of_reqs = RequisitionLine.objects.filter(assistance=each_role.id)
for line in list_of_reqs:
parent = line.parent_req
if parent in req_header_list:
continue
else:
req_header_list.append(parent)
for i in range(len(req_header_list)):
hold_line_count = RequisitionLine.objects.filter(Q(parent_req=req_header_list[i]) & Q(assistance=each_role.id))
for j in hold_line_count:
req_header_line_list.append(j)
return render(request, 'req/assist_req_list.html', {'req_header_line_list':req_header_line_list})
assist_req_list.html
<h1>Assist Requisition</h1>
<table>
{% for requisition in req_header_line_list %}
<tr>
<td>
<a href="{% url 'requisition:assist_req_seq' requisition.parent_req.id requisition.sequence %}">{{ requisition }}</a>
</td>
</tr>
{% endfor %}
</table>