'Python Django | POST method with nested object. NOT NULL constraint failed

My point is to implement the post method with a nested object which has just ID. When I use all fields of a nested object post method works fine. But I'd like to pass just one field and it is ID, other fields gotta be unrequired

Now I'm getting the error like

NOT NULL constraint failed: article_article.author_id

models.py

class Author(models.Model):
    first_name = models.CharField(max_length=20, blank=True, null=True)
    last_name = models.CharField(max_length=20, blank=True, null=True)
    nickname = models.CharField(max_length=20, blank=True, null=True)

    def __str__(self):
        return self.nickname


class Article(models.Model):
    title = models.CharField(max_length=120, unique=True)
    description = models.TextField(blank=True)
    author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='articles')
    created_at = models.DateTimeField(auto_now_add=True, blank=True)
    updated_at = models.DateTimeField(auto_now=True, blank=True)

    def __str__(self):
        return self.title

views.py

class ArticleView(APIView):
    def get(self, request, pk=None):
        if pk:
            article = Article.objects.get(pk=pk)
            serializer = ArticleSerializer(article, many=False)
        else:
            articles = Article.objects.all()
            serializer = ArticleSerializer(articles, many=True)

        return Response(serializer.data)

    def post(self, request):
        data = request.data
        serializer = ArticleSerializer(data=data)
        if serializer.is_valid(raise_exception=True):
            article_saved = serializer.save()
        return Response({"success": "Article '' created successfully".format(article_saved.title)},
                        status=status.HTTP_201_CREATED)

serializers.py

class AuthorSerializer(serializers.Serializer):
    first_name = serializers.CharField(required=False)
    last_name = serializers.CharField(required=False)
    nickname = serializers.CharField(required=False)


class ArticleSerializer(serializers.Serializer):
    title = serializers.CharField(max_length=120)
    description = serializers.CharField()
    author = AuthorSerializer(required=False)

    def create(self, validated_data):
        author_data = validated_data.pop('author', None)

        if author_data:
            author = Author.objects.get_or_create(**author_data)[0]
            validated_data['author'] = author
        return Article.objects.create(**validated_data)


Solution 1:[1]

I got it. I should just have added to a serializer the field ID

class AuthorSerializer(serializers.Serializer):
    first_name = serializers.CharField(required=False)
    last_name = serializers.CharField(required=False)
    nickname = serializers.CharField(required=False)

id = serializers.IntegerField()

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 HackerMF