1

I want to retrieve Student user fields, but I am having a hard time trying to figure out how to do that I tried reading docs but still confused

Studentserializer

class StudentSerializer(serializers.Serializer):
    class Meta:
        model = Student
        fields = ['id', 'user', 'name', 'course']

    def create(self, validated_data):
        Student_det = Student.objects.create(**validated_data)
        return Student_det

serializer view

def Student_list(request):
    if request.method == 'GET':
        stud = Student.objects.all()
        serialized = StudentSerializer(stud, many=True)
        print(serialized.data)
        return JsonResponse(serialized.data, safe=False)

Student Model

class Student (models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    course = models.CharField(max_length=255)
Atif Shafi
  • 954
  • 1
  • 11
  • 26

1 Answers1

1

You can check here. I think the part about nested serializers is what you need.

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ("id", "first_name", "last_name", ) # and you can add other fields here "email", "date_joined", etc.


class StudentSerializer(serializers.ModelSerializer):
    user = UserSerializer()
    
    class Meta:
        model = Student
        fields = ("id", "user", "name", "course", ) 

This will serialize your Student model like

{
  "id": 1,
  "user": {
    "id": 1,
    "first_name": "Example",
    "last_name": "User"
  }
  "name": "student name",
  "course": "course name"
}
arif
  • 441
  • 1
  • 6
  • 13