[英]How to declare author to current user in Model serializer?
我有郵政 model:
class Post(models.Model):
title = models.CharField(max_length=50)
text = models.CharField(max_length=1000)
published_date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
還有一個觀點:
@api_view(['GET', 'POST'])
def posts(request):
if request.method == 'GET':
post_list = Post.objects.all()
serializer = PostSerializer(post_list, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = PostSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors)
和序列化器:
class PostSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(read_only=True)
author = UserSerializer(read_only=True)
category = CategorySerializer(read_only=True)
author_id = serializers.IntegerField(write_only=True)
category_id = serializers.IntegerField(write_only=True)
class Meta:
model = Post
fields = ('id', 'title', 'text', 'published_date', 'author', 'category', 'category_id', 'author_id')
我想發送像 {"title":"some title", "text":"some text", "category_id"=1} 這樣的 POST 請求,這樣 author_id 將自動成為當前用戶 ID。 我怎樣才能做到這一點?
在視圖中,在 POST 期間將當前用戶傳遞給 serializer.save()。
def posts(request):
if request.method == 'GET':
post_list = Post.objects.all()
serializer = PostSerializer(post_list, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = PostSerializer(data=request.data)
if serializer.is_valid():
serializer.save(author=request.user)
^^^
return Response(serializer.data)
return Response(serializer.errors)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.