Отображение контента по идентификатору (views.py) - PullRequest
0 голосов
/ 21 октября 2019

Я разработал приложение для университетской системы для практики, и у меня возникла такая проблема: мне нужно отобразить список специальностей, принадлежащих к какой-то кафедре. И вот проблема: http://127.0.0.1:8000/chairs/1, http://127.0.0.1:8000/chairs/2 и т. Д. Показывают все специализации, как на этом скриншоте this. Но я хочу отображать их только в соответствии с идентификатором стульев. Вот мои коды:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...