Reputation: 4630
I have three table. Student, School, Result
class Student(models.Model):
name = models.CharField(max_length=225)
address = models.CharField(max_length=255)
school = models.Foreignkey(School)
class School(models.Model):
name = models.CharField(max_length=225)
class Result(models.Model):
student = models.Foreignkey(Student)
marks = models.FloatField()
corresponding serializers for those models are like
class SchoolSerializer(serializers.ModelSerializer):
class Meta:
model = School
fields = '__all__'
class StudentSerializer(serializers.ModelSerializer):
school = SchoolSerializer(read_only=True)
class Meta:
model = student
fields = '__all__'
class ResultSerializer(serializers.ModelSerializer):
student = StudentSerializer(read_only=True)
class Meta:
model = student
fields = '__all__'
Whenever resultserializer call, i want studentSerializer should hide student address information. I have already tried to include exclude field as
exclude = ('student__address',)
from this documentation but this doesn't work as student__address is not a model field of result model. How to exclude that address field or hide it from serializer response.
Upvotes: 2
Views: 1056
Reputation: 47354
You can define new ResultStudentSerializer
serializer which will be used only in ResultSerializer
:
class ResultStudentSerializer(serializers.ModelSerializer):
school = SchoolSerializer(read_only=True)
class Meta:
model = student
fields = '__all__'
exclude = ('address',)
class ResultSerializer(serializers.ModelSerializer):
student = ResultStudentSerializer(read_only=True)
class Meta:
model = Result
fields = '__all__'
Upvotes: 2