首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在django中处理特定查询?

如何在django中处理特定查询?
EN

Stack Overflow用户
提问于 2021-02-17 16:26:47
回答 1查看 38关注 0票数 0

在我的视图集中,我已经为filterset_fields提供了通过API端点查询模型的功能。我希望将检索到的查询集转换为dataframe,以便使用pandas处理模型中的数据。为此,我使用了django-pandasto_dataframe()方法。

以下是视图集和视图集中使用的函数:

代码语言:javascript
复制
class StockPriceDataViewSet(mixins.ListModelMixin,
                     viewsets.GenericViewSet):
    queryset = StockPriceData.objects.all()
    serializer_class = StockPriceDataSerializer
    filter_backends = [DjangoFilterBackend, SearchFilter]
    filterset_fields = {
        'date':['gte','lte'],
        'org__symbol':['exact'],
        'org__group':['exact'],
    }
    permission_classes = (AllowAny,)
        
    @action(methods=['GET'], detail=False, url_path='stock')
    def get_df(self, request):
        queryset = self.queryset
        result = generate_df(queryset=queryset)
        return Response(result, status=status.HTTP_200_OK)
代码语言:javascript
复制
def generate_df(queryset):
    df = queryset.to_dataframe()
    df = df.drop(['s_n','id'], axis=1)
    result = df.to_json(orient='records', date_unit='ms', lines=True).splitlines()
    return result

在交互式shell中,当我为特定值过滤查询集时,它工作得很好。我在这里做错了什么?查询集过滤在get_df()的API端点上不起作用,而在queryset方法上正常工作。

此外,get_df()方法没有对数据进行分页。我可以在这里做些什么来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-17 16:57:11

在已设置为StockPriceData.objects.all()的方法中使用self.queryset,并且不对其进行过滤或分页。更改您的方法以执行这些任务:

代码语言:javascript
复制
def get_df(self, request):
    queryset = self.filter_queryset(self.get_queryset())
    paginator = self.paginator
    page = None
    if paginator:
        paginator.paginate_queryset(queryset, self.request, view=self)
        page = paginator.page # assuming PageNumberPagination
    if page is not None:
        result = generate_df(queryset=page.object_list)
        return Response(result, status=status.HTTP_200_OK)

    result = generate_df(queryset=queryset)
    return Response(result, status=status.HTTP_200_OK)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66238209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档