向drf api公开django模型queryset聚合函数的python包。

drf-aggregates的Python项目详细描述


django rest框架聚合

PyPI versionBuild Status

向drf api公开django模型queryset的聚合特性。

要求

  • Python3.6+
  • Django 1.11+
  • django rest framework 3.5.3+

概述

此呈现程序覆盖对APIv2.agg终结点的调用的默认行为。

支持GET调用以以下格式列出终结点:

endpoint.agg/?aggregate[Count]=(field to count)
endpoint.agg/?aggregate[Sum]=(field to sum)
endpoint.agg/?aggregate[custom_function]=arguments
endpoint.agg/?group_by[field to group by]&aggregate[Count]=id
endpoint.agg/?group_by[field to group by]&aggregate[Count]=id&aggregate[Sum]=(field to sum)

支持数据部分提取以进行聚合:

endpoint.agg/?group_by[created__year]&aggregate[Count]=id

支持选择表示提取:

endpoint.agg/?group_by[choiceField]&aggregate[Count]=id

自定义聚合

支持的默认聚合函数在django.db.models.aggregates中定义。

自定义聚合函数已在drf_aggregates.aggregates

中定义

用户定义的聚合将作为kwargs(如果已定义)传递给自定义queryset管理器calculate_aggregates

在queryset上设置的自定义聚合函数应该返回一个字段名字典给聚合函数,然后将与其他聚合一起处理。

示例

示例安装程序可以在example/文件夹中找到。

要启用渲染器,请更新django设置文件:

REST_FRAMEWORK={'DEFAULT_RENDERER_CLASSES':('drf_aggregates.renderers.AggregateRenderer',...),...}

Cars ViewSet中,我们将结果输出到json:

deflist(self,request,*args,**kwargs):queryset=self.filter_queryset(self.get_queryset())data=request.accepted_renderer.render({'queryset':queryset,'request':request})returnResponse(data,content_type=f'application/json')

测试

为了在本地运行测试:

  1. 安装开发要求:

    pip3 install -r requirements-dev.txt

  2. 更新您的环境以指向测试django设置文件:

    export DJANGO_SETTINGS_MODULE=example.settings.test

  3. 运行测试:

    py.test

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Eclipse内存分析器(MAT):不显示当前正在运行的进程   java Apache Velocity:转义字符不能作为关联数组键用于PHP   不截断零的java格式十进制输出   在另一个类文件中调用时返回空值的java getter   java集合获取连接   java解析json使用Gson登录系统应用程序强制关闭   java DelferredResult带有两个请求的ajax请求   java可降低功耗,同时应使用无线   java BoxLayout无法共享错误?   java如何使用计时器制作闹钟   java使用OAuth2保护RESTWeb服务:一般原则   java在一个jframe上显示多个图像和按钮