class AuthorSerializer(ModelSerializer):
class Meta:
model = Author
fields = "__all__"
class BookSerializer(ModelSerializer):
class Meta:
model = Book
fields = "__all__"
I want to get data of AuthorSerializer in BookSerializer. Is it Possible?
CodePudding user response:
You can use serailizerMethodField:
class BookSerializer(ModelSerializer):
author = serializers.SerializerMethodField()
def get_author(self, obj):
""" code to perform query """
author = Author.objects.all()
return AuthorSerializer(author, many=True).data
class Meta:
model = Book
fields = "__all__"
The return statement inside get_author
function explained:
Returning the author
as such returns the query set (thats not the way of serializer), so we pass the data in to AuthorSerializer
to make it JSON object. The first argument passing (ie. author
) is the query set, and secondly many=True
is to say that we are passing multiple objects (in the query set). Lastly .data
returns the data serialized.