Python 返回用户时响应为空';s未读友谊请求DRF
我有一个DRFPython 返回用户时响应为空';s未读友谊请求DRF,python,json,django-rest-framework,django-serializer,Python,Json,Django Rest Framework,Django Serializer,我有一个DRFListAPIView,它应该返回用户所有好友的查询集。我用它来管理双向友谊 以下是ListAPIView的get\u queryset函数: def get_queryset(self): return FriendshipRequest.objects.select_related('from_user', 'to_user').filter( to_user=self.request.user, view
ListAPIView
,它应该返回用户所有好友的查询集。我用它来管理双向友谊
以下是ListAPIView
的get\u queryset
函数:
def get_queryset(self):
return FriendshipRequest.objects.select_related('from_user', 'to_user').filter(
to_user=self.request.user,
viewed__isnull=True).all()
这将返回一个查询集。在README.rst文件中,它表示使用Friend.objects.unread_请求(user=request.user)
来获取用户所有未读FriendshipRequest
模型实例的列表。但是,get\u queryset
函数应该返回查询集,而不是列表。相反,我复制(第198行)以获取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)
我还想序列化友谊请求
id
,但不确定需要什么代码来实现这一点
但是,即使该用户确实有看不见的好友请求,响应如下:
[
{},
{},
{}
]
此用户总共有3个未读好友请求,但为什么它们完全为空
如果我尝试将序列化程序更改为ModelSerializer,如下所示:
class FriendRequestSerializer(serializers.ModelSerializer):
class Meta:
model = FriendshipRequest
fields = ('id', 'from_user', 'to_user', 'created')
存在状态代码500,内部服务器错误,原因是:
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
函数返回FriendshipRequest
模型实例的非空查询集,并由ListAPIView
作为列表返回
思想:
如果ListAPIView
最终将查询集转换为列表,而codeFriend.objects.unread_请求(user=request.user)
返回FriendshipRequest
模型实例的列表,那么为什么不使用GenericAPIView
,重写get方法并将列表作为JSON直接返回,从而无需处理queryset
唯一的问题是,我不知道如何将FriendshipRequest实例列表转换为JSON格式的列表。我认为这是一个更好的方法
有人知道怎么做吗