Django DRF:listview获取工作,detailview返回空响应

Django DRF:listview获取工作,detailview返回空响应,django,django-rest-framework,Django,Django Rest Framework,请容忍我。我在做一些傻事,但我不知道是什么 我正在改编/遵循教程 我使用教程的序列化部分返回用户(列表和详细视图) 我的listview(列出所有用户)工作正常 我的detailview没有。我可以看到serializer实例正在填充详细视图的用户,但是serializer.data为空 没有返回错误,只是一个空的回复{} 我做错了什么 这项工作: @csrf_exempt def parentList(request): """ List all parents or crea

请容忍我。我在做一些傻事,但我不知道是什么

我正在改编/遵循教程

我使用教程的序列化部分返回用户(列表和详细视图)

我的listview(列出所有用户)工作正常

我的detailview没有。我可以看到serializer实例正在填充详细视图的用户,但是serializer.data为空

没有返回错误,只是一个空的回复{}

我做错了什么

这项工作:

@csrf_exempt
def parentList(request):
    """
    List all parents or create a new parent
    """
    if request.method == 'GET':
        theseParents = PlatformUser.objects.all()
        serializer = parentSerializer(theseParents, many=True)
        return baseJSONResponse(serializer.data)
序列化程序中的代码段:

class parentSerializer(serializers.ModelSerializer):
    class Meta:
        model = PlatformUser
        fields = ('pk', 'email', 'first_name', 'last_name', 'phone', 'home_address_1', 'home_address_2', 'city', 'country', 'home_postcode', 'photo', 'overview')
这不起作用(
serializer.data
为空,但已填充序列化程序):


你的查询集似乎是空的

“除DoesNotExists外”是带过滤器的usless。如果未选择任何对象,则此父对象将为空queryset但不会引发异常

若要在不存在的对象上获得404并将对象作为queryset传递给序列化程序,则需要像这样重写代码

thisParent = PlatformUser.objects.filter(pk=pk)
if not thisParent.exists():
    return HttpResponse(status=404)

我建议您使用Rest框架中的通用视图。

谢谢-我不认为我的查询集是空的。。。。对于上面代码中的最后一行
return baseJSONResponse(serializer.data)
我可以看到
serializer
有一个有效的queryset(列表中预期有一个用户),但是serializer.data是空的,不应该是。。。另外,我正在查询已知用户的主键。传递到序列化程序实例不是queryset
serializer=parentSerializer(thisParent[0])
,或者最好重写代码以使用一个对象,而不是queryset
thisParent=PlatformUser.objects.get(pk=pk)
这就是问题所在-我向它发送了一个查询集,它实际上需要一个实例。请您将您的评论(“传递到序列化程序…”转换为答案,我会将其标记为接受?
thisParent = PlatformUser.objects.filter(pk=pk)
if not thisParent.exists():
    return HttpResponse(status=404)