我试过类似的方法,但不管用。
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']
我需要一种能够访问请求的方法。用户从我的Serializer类。
解决方案可以很简单,但我尝试使用self. contentt ['request']访问。用户,但没有在序列化器中工作。
如果你使用DRF显然登录通过令牌是唯一的来源或其他可能是有争议的。
朝着解决方案前进。
传递请求。创建serializer.create时的用户实例
views.py
if serializer.is_valid():
watch = serializer.create(serializer.data, request.user)
serializer.py
def create(self, validated_data, usr):
return Watch.objects.create(user=usr, movie=movie_obj, action=validated_data['action'])
在GET方法中:
添加context={'user':请求。View类中的user}:
class ContentView(generics.ListAPIView):
def get(self, request, format=None):
content_list = <Respective-Model>.objects.all()
serializer = ContentSerializer(content_list, many=True,
context={'user': request.user})
在Serializer类方法中获取:
class ContentSerializer(serializers.ModelSerializer):
rate = serializers.SerializerMethodField()
def get_rate(self, instance):
user = self.context.get("user")
...
...
POST方法:
遵循其他答案(例如Max的答案)。