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)
并且不要忘记导入响应