Django плохо передает контекст - PullRequest
0 голосов
/ 02 апреля 2020

Я пытался передать набор запросов, используя контекст. Но на странице шаблона контекст не работает. Поскольку я реализую два запроса в одном представлении, один набор запросов работает нормально, но другой запрос не проходит должным образом. Вот мой взгляд

# Create your views here.
def xray_result_view(request):
    q=query_holding_together.objects.filter(which_user=request.user)
    for x in q:  
        all_reports=xray_result.objects.get(which_query=x)
    print(all_reports.sys_gen_result)
    return render(request,'XRay/result.html',{'reports':all_reports})

, когда q передается как шаблон, он работает как надо, но не для всех отчетов. вот мой шаблон

{% extends "login/successful.html" %}
{% block middle_window %}
</div>
<div class="container adjust-ment">
    <div class="row">
        <div class="col-12">
            Previous X-ray Results
        </div>
    </div>
    <div class="row">
        <div class="col-12">
            Result
        </div>
    </div>
    <div class="row">
        <div class="col-12">
        {% for y in reports.iterator %}
            File Name:<br>
            Date and Time of Upload:<br>
            System Generated Result:{{ y.sys_gen_result }}<br>
            Doctor's Comment on Result:{{ y.doctor_comment }}<br>
        {% endfor %}


        </div>
    </div>
</div>
{%endblock middle_window %}

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Вы не передаете набор запросов в шаблоне, вместо этого вы отправляете объект. Позвольте мне объяснить:

 for x in q:  
    all_reports=xray_result.objects.get(which_query=x)  #<-- Here

Здесь all_reports - это переменная, которая имеет только xray_result объект. после завершения итерации all_reports будет содержать только последний объект из q.

Вместо этого вы можете попробовать вот так:

def xray_result_view(request):
    all_reports=xray_result.objects.get(which_query__which_user=request.user)
    return render(request,'XRay/result.html',{'reports':all_reports})

И обновить шаблон:

{% for y in reports %}
    File Name:<br>
    Date and Time of Upload:<br>
    System Generated Result:{{ y.sys_gen_result }}<br>
    Doctor's Comment on Result:{{ y.doctor_comment }}<br>
{% endfor %}

Наконец, рассмотрите возможность использования PascalCase при написании имен классов (согласно стандарту pep8).

0 голосов
/ 02 апреля 2020

Как @ruddra указал, что была проблема с l oop. так что для этого я попробовал ниже обходной путь, и он работал как шарм.

def xray_result_view(request):
    q=query_holding_together.objects.filter(which_user=request.user)
    all_reports=xray_result.objects.none()
    for x in q:  
        all_reports = all_reports | xray_result.objects.filter(which_query=x)
    for x in all_reports:
        print(x.sys_gen_result) 
    return render(request,'XRay/result.html',{'reports':all_reports})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...