0

I'm using django 3.0.7 and Django Rest Framework

my models.py looks like this:

class BlogPost(models.Model):
        title                           = models.CharField(max_length=50, null=False, blank=False)
        body                            = models.TextField(max_length=5000, null=False, blank=False)
        header                          = models.TextField(max_length=5000, null=False, blank=False)
        image                           = models.ImageField(upload_to=upload_location, null=False, blank=False)
        date_published          = models.DateTimeField(auto_now_add=True, verbose_name="date published")
        date_updated            = models.DateTimeField(auto_now=True, verbose_name="date updated")
        author                          = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
        slug                            = models.SlugField(blank=True, unique=True)

        def __str__(self):
                return self.title

serializers.py:

class BlogPostSerializer(serializers.ModelSerializer):

    class Meta:
        model = BlogPost
        fields = ['title', 'body', 'image', 'date_updated', 'username']

views.py:

@api_view(['POST'])
def api_create_blog_view(request):

    blog_post = BlogPost(author=request.user)

    if request.method == 'POST':
        serializer = BlogPostSerializer(blog_post, data=request.data)
        data = {}
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

I need to save header in "header" database field, i tried to save somehow like this:

serializer = BlogPostSerializer(blog_post, data=request.data, header=request.META)

but it's didn't work

1 Answer 1

1

What you are doing is on the right track.
HttpRequest.META gives a dictionary containing all available HTTP headers. You could also use HttpRequest.headers, it is a simpler way to access all HTTP-prefixed headers, plus CONTENT_LENGTH and CONTENT_TYPE.

You could save the value after the is_valid() check.

@api_view(['POST'])
def api_create_blog_view(request):

    blog_post = BlogPost(author=request.user)

    if request.method == 'POST':
        serializer = BlogPostSerializer(blog_post, data=request.data)
        data = {}
        if serializer.is_valid():
            serializer.save(header=request.headers)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.