- Import the necessary modules in your Django REST framework project:
from rest_framework import serializers, viewsets
- Define your models and their relationships:
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
- Create serializers for your models:
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = ['id', 'name']
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['id', 'title', 'author']
- Create a viewset for your Book model:
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
- Handle the POST request in the viewset's create method:
def create(self, request, args, *kwargs):
author_id = request.data.get('author')
author_instance = Author.objects.get(id=author_id)
request.data['author'] = author_instance.id
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)