【发布时间】:2016-10-29 07:14:07
【问题描述】:
我在 Django Rest 中有一个用于用户配置文件的序列化程序:
class UserProfileSerializer(serializers.ModelSerializer):
......................
......................
status = serializers.SerializerMethodField()
def get_status(self, obj):
user = self.context['request'].user
if obj.user.userprofile in user.followed_userprofiles_set.all():
return "following"
else:
return "notfollowing"
class Meta:
model = UserProfile
fields = (...., 'status',...)
我有两个使用这个序列化器的视图:
class Followers(APIView):
def get(self, request, format=None):
#user who follow current user
users = request.user.userprofile.followers.all()
userprofiles= UserProfile.objects.filter(user__in=users)
serializer = UserProfileSerializer(userprofiles, many=True)
return Response(serializer.data)
和
class Friends(mixins.ListModelMixin, generics.GenericAPIView):
queryset = UserProfile.objects.all()
serializer_class = UserProfileSerializer
permission_classes = (permissions.IsAuthenticated,)
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def get_queryset(self):
.................
.................
return queryset
一个视图使用 APIView,另一个使用 genericAPIView。当我从 genericAPIView 请求时,它工作正常。但是当我从 APIView 请求时,它给了我关键错误。使用 APIView 时如何在序列化器方法中检索当前用户?
【问题讨论】:
标签: python django serialization django-rest-framework