如何在DRF ListAPIView中返回朋友请求的查询集?

时间:2017-07-31 08:19:37

标签: python json rest django-rest-framework mutual-friendship

我在我的django rest框架(DRF)后端api中使用this django app来管理我的Android应用程序用户之间的双向友谊。在我的一个DRF视图中,我想返回所有用户的未读朋友请求的查询集。在django-friendship文档中,它表示要

  

列出所有未读的友情请求:

Friend.objects.unread_requests(user=request.user)

这是我的ListAPIView:

class ListUnseenFriendRequests(generics.ListAPIView):
    serializer_class = serializers.FriendRequestSerializer
    permission_classes = (IsAuthenticated,)

    def get_queryset(self):
        return Friend.objects.unread_requests(user=self.request.user)

序列化程序FriendRequestSerializer如下所示:

class FriendRequestSerializer(serializers.Serializer):
    from_user = models.ForeignKey(User, related_name='friendship_requests_sent')
    to_user = models.ForeignKey(User, related_name='friendship_requests_received')
    created = models.DateTimeField(default=timezone.now)

我在序列化程序中使用与django-friendship源代码中的FriendshipRequest模型相同的字段名称。

当我运行服务器并向相应的端点/ friendship / list-unseen-friend-requests /发出api请求时,JSON响应如下:

[
    {},
    {},
    {}
]

我已经向该用户发送了3个好友请求,因此该号码是正确的,但它们都是空的。

如何解决此问题,以便将朋友请求返回为空?

我尝试将序列化程序更改为ModelSerializer,如下所示:

class FriendRequestSerializer(serializers.ModelSerializer):
    class Meta:
        model = FriendshipRequest
        fields = ('from_user', 'to_user', 'created')

调用api端点时的结果如下:

AttributeError: 'tuple' object has no attribute 'values'
[31/Jul/2017 08:26:32] "GET /friendship/list-unseen-friend-requests/ HTTP/1.1" 500 16150

0 个答案:

没有答案