我试过这样的东西,它不起作用。
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
def save(self):
user = self.context['request.user']
title = self.validated_data['title']
article = self.validated_data['article']
我需要一种能够从我的序列化程序类访问request.user的方法。
发布于 2015-05-13 09:06:59
您不能直接访问request.user
。您需要访问请求对象,然后获取用户属性。
如下所示:
user = self.context['request'].user
或者为了安全起见,
user = None
request = self.context.get("request")
if request and hasattr(request, "user"):
user = request.user
发布于 2016-01-24 19:41:58
实际上,您不必费心考虑上下文。有一种更好的方法:
from rest_framework.fields import CurrentUserDefault
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
def save(self):
user = CurrentUserDefault() # <= magic!
title = self.validated_data['title']
article = self.validated_data['article']
发布于 2016-05-04 17:00:31
正如Igor在其他答案中提到的,您可以使用CurrentUserDefault。如果您不想仅因此而重写保存方法,则使用doc
from rest_framework import serializers
class PostSerializer(serializers.ModelSerializer):
user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault())
class Meta:
model = Post
https://stackoverflow.com/questions/30203652
复制相似问题