how to post data to foreign key in django rest framework

  1. Import the necessary modules in your Django REST framework project:
from rest_framework import serializers, viewsets
  1. 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)
  1. 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']
  1. Create a viewset for your Book model:
class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
  1. 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)