Я разработал приложение для университетской системы для практики, и у меня возникла такая проблема: мне нужно отобразить список специальностей, принадлежащих к какой-то кафедре. И вот проблема: http://127.0.0.1:8000/chairs/1
, http://127.0.0.1:8000/chairs/2
и т. Д. Показывают все специализации, как на этом скриншоте
. Но я хочу отображать их только в соответствии с идентификатором стульев. Вот мои коды:
views.py:
def list_of_specialties(request, chair_id):
chairs = Chair.objects.all()
if chair_id:
chair_id = get_object_or_404(Chair, id=chair_id)
bachelor_sp = Specialty.objects.filter(degree_id=1)
master_sp = Specialty.objects.filter(degree_id=2)
phd_sp = Specialty.objects.filter(degree_id=3)
context = {
'chairs': chairs,
'chair_id': chair_id,
'bachelor_sp': bachelor_sp,
'master_sp': master_sp,
'phd_sp': phd_sp,
}
return render(request, 'specialties.html', context)
urls.py:
urlpatterns = [
path('', views.index, name='index'),
path('chairs', views.chairs, name='chairs'),
path('chairs/<int:chair_id>', views.list_of_specialties, name='list_of_specialties'),
path('chairs/<int:chair_id>/<int:specialty_id>', views.list_of_specializations, name='list_of_specializations'),
]
models.py:
class Chair(models.Model):
def __str__(self):
return self.name
name = models.CharField(max_length=100)
phone = models.CharField(max_length=30)
email = models.CharField(max_length=50)
chairman = models.CharField(max_length=30)
class Specialty(models.Model):
def __str__(self):
return self.name
name = models.CharField(max_length=100)
chair = models.ForeignKey(Chair, on_delete=models.CASCADE)
degree = models.ForeignKey(Degree, on_delete=models.CASCADE)