Nested Serializer
Nested Serializers
Consider you have another model Author
related to Book
. You want to include the author details in the book serialization.
Models
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
published_year = models.IntegerField()
Serializers
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = ['id', 'name', 'age']
class BookWithAuthorSerializer(serializers.ModelSerializer):
author = AuthorSerializer()
class Meta:
model = Book
fields = ['id', 'title', 'author', 'published_year']
Views
class BookListView(APIView):
def get(self, request):
books = Book.objects.all()
serializer = BookWithAuthorSerializer(books, many=True)
return Response(serializer.data)
URLs
from django.urls import path
from .views import BookListView, BookCreateView
urlpatterns = [
path('books/', BookListView.as_view(), name='book-list'),
path('books/create/', BookCreateView.as_view(), name='book-create'),
]
Summary
- Nested Serializers: Serialize related models, allowing you to represent complex relationships in your API.