Easily browse your Django models
Project description
django-pivot is a wrapper around numpy, pandas and django-pandas letting you easily manipulate pivot tables on your queryset.
Install
pip install django-pivot2
Modify your model(s) to use django_pandas.managers.DataFrameManager or django_pandas.managers.DataFrameQuerySet:
class LongTimeSeries(models.Model): date_ix = models.DateTimeField() series_name = models.CharField(max_length=100) value = models.FloatField() objects = DataFrameManager()
Usage
This app basicaly gives APIs to request a pivot table. Everything is not automatic and developer must always declare:
The possible values
The possible rows and columns
And for a end-user the API will ask
Values
Rows
Columns
Aggregation functions
Applied function
Format
As class-based view
A mixin is available to compose you own pivot. It has the following behavior: - Display a form to collect parameters of pivot table - Display pivot table as HTML if valid input is given - Download data as file with format given in form
Example:
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 is compatible with Django’s ListView, django-filters’ FilterView or any kind of view with the same behavior.
With graphene-django
Coming soon
With graphene-django-extras
Example of 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'], )
Example of request:
query { pivot_long_time_series (values: ["value"], rows: ["serie_name"], cols: ["value"], aggfuncs: ["mean"]) }
As GraphQL is supposed to return JSON only and pandas JSON format is ..hum… weird, we convert pivot_table into CSV and after into a list of list, so fully compatible.
With Django REST Framework
Coming soon
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django-pivot2-0.2.10.tar.gz
.
File metadata
- Download URL: django-pivot2-0.2.10.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4f2c4f8288c66007d241a0fa8cb69c592389a35570601c27239ccdb710b96dc |
|
MD5 | 99de558a63ef92318c7daa8debe43260 |
|
BLAKE2b-256 | 353ba1f8f4a3a350e92bf0a67b197cb46428c4929dbd0e9d3eeac0df2c13d5b9 |