Accessing the course contents
You need a view for displaying the courses that students are enrolled on, and a view for accessing the actual course contents. Edit the views.py
file of the students
application and add the following code to it:
from django.views.generic.list import ListView
from courses.models import Course
class StudentCourseListView(LoginRequiredMixin, ListView):
model = Course
template_name = 'students/course/list.html'
def get_queryset(self):
qs = super().get_queryset()
return qs.filter(students__in=[self.request.user])
This is the view to see courses that students are enrolled on. It inherits from LoginRequiredMixin
to make sure that only logged-in users can access the view. It also inherits from the generic ListView
for displaying a list of Course
objects. You override the get_queryset()
method to retrieve only the courses that a student is enrolled on; you filter the QuerySet by the student’s ManyToManyField...