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",)
- [Django]-Password field is visible and not encrypted in Django admin site
- [Django]-How to include "None" in lte/gte comparisons?
- [Django]-How to set a login cookie in django?
- [Django]-ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details
- [Django]-Django-lfs "No module named appconf"
Source:stackexchange.com