Django - шаблон не отображает весь контекстный список, который я передаю - PullRequest
0 голосов
/ 30 августа 2018

Это сводит меня с ума. Я запустил свою логику в оболочке, и список, который я заполняю, содержит все значения, которые должны быть переданы в шаблон, но при визуализации шаблона он отображает только первый проход итерации 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>    

1 Ответ

0 голосов
/ 30 августа 2018

У вас ошибка отступа; ваш return находится внутри внешнего цикла for, поэтому будет запущен после первой итерации.

...