查询文档中的参数未显示带有过滤器的视图

时间:2018-05-25 10:00:30

标签: django-rest-framework

我在django休息时打开了自动生成/ docs,我在设置中打开了limitoffset。文档显示所有lsit视图都接受那些查询参数,除了具有过滤器的视图基于id的列表,然后docs不显示查询参数和仅url参数,即使查询参数仍然有效。

我已经验证查询参数仍适用于视图。 我通过get_queryset

进行过滤

我的观点类:

class DataList(generics.ListCreateAPIView):
    serializer_class = DataSerializer

    def get_queryset(self):
        start   = self.request.query_params.get('start', None)
        end     = self.request.query_params.get('end',   None)
        tail    = self.request.query_params.get('tail',  None)

        if(start != None or end != None):
            if(start == None):
                return Data.objects.filter(id_unit=self.kwargs['id_unit'], inserted__lte = end)
            elif(end == None):
                return Data.objects.filter(id_unit=self.kwargs['id_unit'], inserted__gte = start)
            else:
                return Data.objects.filter(id_unit=self.kwargs['id_unit'], inserted__gte = start, inserted__lte = end)

        return Data.objects.filter(id_unit=self.kwargs['id_unit'])

1 个答案:

答案 0 :(得分:0)

试试这个

class DataList(generics.ListCreateAPIView):

    serializer_class = DataSerializer

    def get_queryset(self):
        start   = self.request.query_params.get('start', None)
        end     = self.request.query_params.get('end',   None)
        tail    = self.request.query_params.get('tail',  None)

        data = Data.objects.filter(id_unit=self.kwargs['id_unit'])

        if start:
            data.filter(inserted__gte = start)
        if end:
            data.filter(inserted__lte = end)

        retutn data