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

时间:2017-12-02 21:05:27

标签: django django-rest-framework django-filter

所以我在Django中设置REST API,并且无法弄清楚如何使用http查询返回模型中单个字段的结果。例如,让我们说我们的模型用户具有“用户名”,“用户名”和“电子邮件”等属性。

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

像myapp / api / user / 1这样的东西?用户名或myapp / api / user / 1 / username是我正在寻找的但我找不到任何好的答案。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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错误)。