Я пытаюсь отфильтровать таблицу преподавателей, чтобы отобразить профессоров, которые соответствуют определенной школе и специализации, параметры отображаются в сообщении об ошибке, я просто не понимаю, почему вообще появляется сообщение об ошибке.
Views.py
from django.http import HttpResponse
from django.shortcuts import render
from .models import professor, School, Major, School_Major
def index(request):
schools = School.objects.all()
return render(request, 'locate/index.html', {'schools': schools})
# def Major(request, Major):
# major_choice = professor.objects.filter(Major =Major)
# return render(request, 'locate/major.html', {'major_choice': major_choice})
def Majors(request, school_pk):
schools_majors_ids = []
major_after_filter = []
#Filter to a show the association of 1 schools majors
school_choice = School_Major.objects.filter(school_id = school_pk)
#Append each of the major id's to school_majors_ids list
for store in school_choice:
schools_majors_ids.append(store.major_id)
#Filter majors names required
for store in schools_majors_ids:
name = Major.objects.get(id = store)
major_after_filter.append(name)
return render(request, 'locate/major.html', {'major_after_filter' : major_after_filter,
'school_pk' : school_pk})
def Professors(request, school_pk, major_pk):
professors = professors.objects.filter(school_id = school_pk).filter(major_id = major_pk)
return render(request, 'locate/professors', {'professors' : professors})
url.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path(' <int:school_pk>/', views.Majors, name='Major'),
path(' <int:school_pk/<int:major_pk>/', views.Professors, name="Professors")
]
majors.html
<h3 id="test">{{school_pk}}</h3>
<ul>
{% for major in major_after_filter %}
<li><a href="{% url 'Professors' school_pk major.id %}">{{major.name}}</a></li>
{%endfor%}
</ul>
Мне нужен был способ разместитьзначение первичного ключа школ, а также первичного ключа майоров в качестве параметров функции представления «Профессор», чтобы можно было отфильтровать таблицу профессоров для отображения правильных мажоров.
Когда я покидаю school_pk, как виднониже
Я получаю следующую ошибку
django.urls.exceptions.NoReverseMatch: Reverse for 'Professors' with arguments '(1, 5)' not found. 1 pattern(s) tried: ['locate/\\ <int:school_pk/(?P<major_pk>[0-9]+)/$']
Когда я удаляю school_pk, как показано ниже
<li><a href="{% url 'Professors' major.id %}">{{major.name}}</a></li>
Я получаю эту ошибку
TypeError: Professors() missing 1 required positional argument: 'school_pk'
Это имеет смысл, потому что функция Professor требует параметра school_pk ( Обратите внимание, что переменная, используемая в html и параметре, названа одинаково, извините, если это кажется запутанным ).