[Django]-How to list related objects in Django Rest Framework

6👍

You can make use of PrimaryKeyRelatedField for this. First set related_name attribute to your foreign key.

university = models.ForeignKey(University, related_name='students')

And then change your serializer like this.

class UniversitySerializer(serializers.ModelSerializer):
    students = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
    class Meta:
        model = University

Hope this helps 🙂

1👍

You can also use the related_name attribute like this (don’t forget to makemigrations -> migrate):

class Student(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    university = models.ForeignKey(University, related_name="students")

Now when accessed in the UniversitySerializer you can just add the new field name:

class UniversitySerializer(serializers.ModelSerializer):
    class Meta:
        model = University
        fields = ("id", "name", "students",)

That will return you exactly what you are asking for, now just to add if you have small data sets and always require to fetch the related data, you can serialize it at the UniversitySerializer level directly (instead of having to make different calls) something like this:

class UniversitySerializer(serializers.ModelSerializer):
    students = StudentSerializer(many=True, read_only=True)
    class Meta:
        model = University
        fields = ("id", "name", "students",)
👤Seraf

Leave a comment