Как получить доступ к первичному ключу из общего представления списка?

Я пытаюсь получить доступ к первичному ключу url из общего представления списка. Позвольте мне объяснить. Итак, в настоящее время у меня есть простая страница со списком экземпляров студентов из модели student. Каждая строка посвящена одному студенту, например, имя, возраст, email и т.д. Теперь я хочу добавить ссылку на каждую строку, чтобы можно было просмотреть календарь каждого студента, как только я нажму на нее. Сейчас представление календаря представляет собой обычный ListView, как показано ниже

class CalendarView(LoginRequiredMixin, generic.ListView):
    model = Class
    template_name = 'leads/calendar.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # use today's date for the calendar
        d = get_date(self.request.GET.get('month', None))
        # Instantiate our calendar class with today's year and date
        cal = Calendar(d.year, d.month)
        # Call the formatmonth method, which returns our calendar as a table
        html_cal = cal.formatmonth(withyear=True)
        context['calendar'] = mark_safe(html_cal)
        context['prev_month'] = prev_month(d)
        context['next_month'] = next_month(d)
        return context

Однако я хочу, чтобы календарь показывал только информацию, относящуюся к студенту, на котором я щелкнул. Чтобы сделать это, мне нужно иметь возможность использовать первичный ключ (или ID) студента в представлении календаря. Конечно, я могу встроить первичный ключ в url, но я понятия не имею, как получить доступ к pk в моем generic.ListView. Также, я знаю, что некоторые из вас могут предложить мне переключить представление на функцию, но я не собираюсь использовать функцию, так как я сделал большую часть своего кодирования в generic версии. Я надеюсь, что вы, ребята, сможете помочь, и задавайте мне любые вопросы, которые у вас есть.

Допустим, ваш url-путь выглядит так:

path('calendar/<int:studentId>/', CalendarView.as_view(), name='CalendarView'), 

Тогда вы можете сделать:

class CalendarView(LoginRequiredMixin, generic.ListView):

    def get_queryset(self):
        return Class.objects.filter(student__id=self.kwargs['studentId'])
Вернуться на верх