我在我的 django rest 框架(DRF)后端 api 中使用这个 django 应用程序来管理我的 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 个好友请求,所以这个数字是正确的,但是它们都是空的。
如何解决此问题,以使好友请求不返回 null?
我尝试将序列化器更改为 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