django rest框架中的过滤器出现问题

django rest框架中的过滤器出现问题,django,django-rest-framework,Django,Django Rest Framework,我真的很困惑。为什么这个代码不起作用 class EduUserView(viewsets.ModelViewSet): serializer_class = EduuserSerializer def get_queryset(self): if(self.kwargs != {}): test = EduUser.objects.filter(eduId=self.kwargs['pk']) else:

我真的很困惑。为什么这个代码不起作用

class EduUserView(viewsets.ModelViewSet):
    serializer_class = EduuserSerializer
    def get_queryset(self):
        if(self.kwargs != {}):
            test = EduUser.objects.filter(eduId=self.kwargs['pk'])
        else:
            test =  EduUser.objects.all()
        print(test)
        return test
    http_method_names = ['get']

这是DRF模型视图集的文档。

将视图集更改为以下代码。 DRF自动生成您所需的API

当你点击-
http://yourhost.com/api/eduuser/
list()
方法被调用。 当你点击-
http://yourhost.com/api/eduuser//
检索(pk)
方法被调用,它将单独返回您的对象

class EduUserView(viewsets.ModelViewSet):
    queryset = EduUser.objects.all()
    serializer_class = EduuserSerializer

    def retrieve(self, request, pk=None, **kwargs):
        if isintance(pk, uuid.UUID):
            return self.get_serializer_class()(queryset.get(uuid_field=pk))
        return super(EduUserView, self).retrieve(request, pk, **kwargs)

你这边的错误是,你试图建造一些已经为你建造的东西!!:P

假设您正在尝试基于PK获取对象?您能确认这一点吗?您正在传递一个长字符串(看起来像一个
UUID
),它与数据库入口不匹配“不工作”是什么意思?@RoopakANelliat Yes@JPG它的匹配。你可以在图片上看到这一点问题是EduId不是真正的PK。它只是一个唯一的属性,在这种情况下,您可以重写retrieve方法。编辑答案。预期从视图返回
响应
HttpResponse
HttpStreamingResponse
,但收到
现在我收到了此错误将return语句更改为-
返回响应(data=self.get\u serializer\u class()(queryset.get(uuid\u field=pk)).data)
并且不要忘记导入
响应