он не возвращает данные фильтра QuerySet в HTML - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь использовать следующий код для печати всех данных на странице HTML. когда я печатаю данные в командной строке , он работает правильно, но не печатаю данные в HTML.

вид .py вывод view.py в командной строке Я хочу напечатать те же данные на HTML

def previousYear(request):
    Subjects = Subject.objects.all()
    filters = None
    Papers = None
    print("=========================================================")
    if request.method == "POST":
        if (request.POST.get("Year") != "") & (request.POST.get("Department") != ""):
            a = request.POST.get("Year")
            b = request.POST.get("Department")
            filters = Subjects.filter(Year=a,Department_id=b)
            for i in filters:
                Papers = Pre_Q_Paper.objects.filter(Subjects=i)
                if Papers.exists():
                    print(i)
                    for j in Papers:
                        print(j)
    data = {"papers":Papers,
            "filters":filters}
    return render(request,"Previous.html", data)

основной. html

{%for i in filters%}
   <h2>{{i}}</h2>
   {% for item in papers %}
       <h2>{{ item }}</h2>
       {% endfor %}
{% endfor %}

1 Ответ

0 голосов
/ 04 августа 2020

Меня немного смущает то, что вы пытаетесь сделать с вашей точки зрения. Прежде всего, я не понимаю, почему вы должны отправить POST в представление, когда вы пытаетесь получить данные.

Я бы предложил что-то подобное для вашего views.py

def previous_year(request):
    data = {
      "papers": [],
      "subjects": [],
    }
    if request.method == 'GET':
      year = request.GET.get('year', '')
      dep_id = request.GET.get('department', '')
      if year and dep_id:
        subjects_filtered = Subjects.objects.filter(Year=year, Department_id=dep_id)
        papers = Pre_Q_Paper.objects.filter(Subjects__in=subjects_filtered)
        data["papers"] = papers
        data["subjects"] = subjects_filtered


    return render(request, "Previous.html", data)

а затем в вашем Previous.html

{% for subject in subjects %}
   <h2>{{ str(subject) }}</h2>
   {% for paper in papers %}
       {{ str(paper) }}<br />
   {% endfor %}
{% endfor %}

Затем вы отправляете год и идентификатор отдела через параметры запроса следующим образом:

? год = 2018 & отдел = 2

Пожалуйста, следуйте этому руководству , если у вас возникли трудности с началом работы

...