首页 文章

如何在django rest框架查询中得到单个字段?

提问于
浏览
0

所以我在Django中设置REST API,无法弄清楚如何在带有http查询的模型中返回单个字段的结果 . 例如,假设我们的模型用户具有“id”,“username”和“email”属性 .

返回该模型实例的所有相关字段很容易,但我如何从查询中获取单个字段?

有点像myapp / api / user / 1?username或myapp / api / user / 1 / username是我正在寻找的但我找不到任何好的答案 .

2 回答

  • 1

    那么你想过滤你的模型结果吗?如果是这样,看起来你需要创建一个APIView,获取你的模型,然后操纵你想要显示的字段 .

    像这样的东西:

    class UserField(APIView): 
    
    
        def get(self, request):
            path = str.split(str(request.path),'/')
            print(path)
            fieldname = path[4] #check your path on the print
            if fieldname= 'username':
                content={'username':User.objects.get(pk=path[3]).username}
                     content = {
                    'fieldname': 'something',   
                }            
    
                return Response(content)
    
  • 0

    另一种适用于模型中所有字段的方法,

    class UserViewSet(viewsets.ViewSet):
        permission_classes = [IsAuthenticated]
    
        def field(self, request, pk, fname):
            user = User.objects.get(id=pk)
            data = getattr(user, fname)
    
            return Response({'result':data})
    

    修改urls.py以路由到视图,

    url(r'^user/(?P<pk>[0-9]+)/(?P<fname>\w+)/$', UserViewSet.as_view({'get': 'field',}), name='user-field'),
    

    网址格式将是,

    /user/<user-id>/<field-name>/
    

    注意:您还可以在视图中为未知字段等添加错误方案(并发送4xx错误) .

相关问题