返回用户未读的FriendshipRequest DRF时出现空响应

时间:2017-08-01 10:35:52

标签: python json django-rest-framework django-serializer

我有一个DRF ListAPIView,它应该返回所有用户朋友的查询集。为了管理双向友谊,我使用了django-friendship

以下是get_queryset的{​​{1}}功能:

ListAPIView

这会返回FriendshipRequest个查询集。在README.rst文件中,它说使用def get_queryset(self): return FriendshipRequest.objects.select_related('from_user', 'to_user').filter( to_user=self.request.user, viewed__isnull=True).all() 来获取所有用户的未读Friend.objects.unread_requests(user=request.user)模型实例的列表。但是FriendshipRequest函数应该返回一个查询集而不是列表。相反,我复制source code(第198行)以获取get_queryset个实例的查询集。

以下是目前使用的序列化程序:

FriendshipRequest

我还希望序列化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) FriendshipRequest,但不确定执行此操作需要哪些代码。

但是,即使此用户确实有看不见的好友请求,响应也是以下JSON:

id

此用户确实总共有3个未读好友请求,但为什么它们完全为空?

如果我尝试将序列化程序更改为如下的ModelSerializer:

[
    {},
    {},
    {}
]

状态代码500,内部服务器错误,因为:

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

如何让AttributeError: 'tuple' object has no attribute 'values' [01/Aug/2017 10:20:18] "GET /friendship/list-unseen-friend-requests/ HTTP/1.1" 500 16149 函数返回由get_queryset作为List返回的FriendshipRequest模型实例的非null查询集?

思想

如果ListAPIView最终将查询集转换为列表,而代码ListAPIView返回Friend.objects.unread_requests(user=request.user)模型实例列表,那么为什么不使用FriendshipRequest,覆盖get方法并直接将列表作为JSON返回,无需处理查询集。

唯一的问题是我不知道如何将FriendshipRequest实例列表转换为JSON列表。我认为这是一种更好的方法。

有谁知道怎么做?

0 个答案:

没有答案