我正在使用 django 3.0.7 和 Django Rest Framework
我models.py
看起来像这样:
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)
我需要在“header”数据库字段中保存标题,我试图以某种方式保存:
serializer = BlogPostSerializer(blog_post, data=request.data, header=request.META)
但它没有用
你正在做的事情是在正确的轨道上。
HttpRequest.META
给出一个包含所有可用 HTTP 标头的字典。您也可以使用HttpRequest.headers
,这是访问所有带 HTTP 前缀的标头以及 CONTENT_LENGTH 和 CONTENT_TYPE 的更简单方法。
您可以在is_valid()
检查后保存该值。
@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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句