Reputation: 2212
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
Upvotes: 0
Views: 525
Reputation: 204
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)
Upvotes: 1