轻松浏览您的django模型
django-pivot2的Python项目详细描述
Django Pivot是Numpy、Pandas和Django Pandas的包装 您可以在QuerySet上轻松地操作透视表。
安装
pip install django-pivot2
修改模型以使用django_pandas.managers.DataFrameManager或 django_pandas.managers.DataFrameQuerySet:
class LongTimeSeries(models.Model): date_ix = models.DateTimeField() series_name = models.CharField(max_length=100) value = models.FloatField() objects = DataFrameManager()
用法
这个应用程序basicaly提供api来请求透视表。一切都不是自动的 开发人员必须始终声明:
- 可能的值
- 可能的行和列
对于最终用户,api将询问
- 值
- 行
- 列
- 聚合函数
- 应用函数
- 格式
基于类的视图
可以合成你自己的枢轴。它具有以下行为: -显示窗体以收集数据透视表的参数 -如果给定有效输入,则将透视表显示为HTML -以文件的形式下载数据,格式如下示例:
from django_filters.views import FilterView from django_pivot.views import PivotView from myapp import models class LongTimeSeriesPivotView(PivotView, FilterView): template_name = "pivot.html model = models.LongTimeSeries values_choices = ['date_ix', 'value'] rows_choices = cols_choices = ['serie_name', 'date_ix', 'value']
PivotView与django的ListView兼容,django过滤器FilterView 或任何有相同行为的观点。
石墨烯django
即将推出
石墨烯django extras
schema.py示例:
from graphene_django import DjangoObjectType from django_pivot.contrib.graphene_django_extras import PivotField from myapp import models class LongTimeSeriesType(DjangoObjectType): class Meta: model = models.LongTimeSeries class Query: pivot_long_time_series = PivotField( LongTimeSeriesType, filterset_class=filtersets.LongTimeSeriesFilter, values_choices=['date_ix', 'value'], rows_choices=['serie_name', 'date_ix', 'value'], cols_choices=['serie_name', 'date_ix', 'value'], )
请求示例:
query { pivot_long_time_series (values: ["value"], rows: ["serie_name"], cols: ["value"], aggfuncs: ["mean"]) }
因为graphql应该只返回json,而pandas的json格式是..嗯…奇怪, 我们将pivot_表转换为csv,然后转换为列表列表,因此完全兼容。
使用django rest框架
即将推出