Search code examples
pythondjangodjango-rest-frameworkdjango-serializer

Course Details are not showing


I'm trying to get course details from enrolled course but it returns only the course ID. I tried with nested serializers but it went wrong. How can I get course details with the following setup

models

class Course(models.Model):
    course_name = models.CharField(max_length=300,default=None)
    author = models.ForeignKey(TeacherProfile,on_delete=models.CASCADE,null=True,default=None)
    course_description = models.TextField(null=True)
    course_cover = models.ImageField(null=True,blank=True,upload_to='course_covers/')

    def __str__(self):
        return self.course_name



class Enrollment(models.Model):
    enroll_key = models.CharField(max_length=100,default="Text here",null=True)
    course = models.ForeignKey(Course,on_delete=models.CASCADE,null=True,related_name='enrollment')
    student = models.ForeignKey(StudentProfile,on_delete=models.CASCADE,null=True)

    def __str__(self):
        return self.course.course_name

serializer

class MycoursesSerializer(serializers.ModelSerializer):
    class Meta:
        model = Enrollment
        fields = "__all__"

View

@api_view(['GET'])
@permission_classes([IsAuthenticated])
def MyCourses(request):
    student = StudentProfile.objects.get(user=request.user)
    courses_enrolled = Enrollment.objects.filter(student=student)
    serializer = MycoursesSerializer(courses_enrolled,many=True)
    return Response(serializer.data)

response

{
        "id": 1,
        "enroll_key": "Text here",
        "course": 1,
        "student": 1
    }

Solution

  • class MycoursesSerializer(serializers.ModelSerializer):
        class Meta:
            model = Enrollment
            fields = "__all__"
            depth = 1