Skip to main content

Chart.js integration for Django admin models

Project description

django-admincharts

Add Chart.js visualizations to your Django admin using a mixin class.

Example

django-admincharts example

from django.contrib import admin

from .models import BillingAccount
from admincharts.admin import AdminChartMixin
from admincharts.utils import months_between_dates


@admin.register(BillingAccount)
class BillingAccountAdmin(AdminChartMixin, admin.ModelAdmin):
    def get_list_chart_data(self, queryset):
        if not queryset:
            return {}

        # Cannot reorder the queryset at this point
        earliest = min([x.ctime for x in queryset])

        labels = []
        totals = []
        for b in months_between_dates(earliest, timezone.now()):
            labels.append(b.strftime("%b %Y"))
            totals.append(
                len(
                    [
                        x
                        for x in queryset
                        if x.ctime.year == b.year and x.ctime.month == b.month
                    ]
                )
            )

        return {
            "labels": labels,
            "datasets": [
                {"label": "New accounts", "data": totals, "backgroundColor": "#79aec8"},
            ],
        }

Installation

Install from pypi.org:

$ pip install django-admincharts

Add admincharts to your Django INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    "admincharts",
]

Use the AdminChartMixin with an admin.ModelAdmin class to add a chart to the changelist view.

Options can be set directly on the class:

from django.contrib import admin
from admincharts.admin import AdminChartMixin

@admin.register(MyModel)
class MyModelAdmin(AdminChartMixin, admin.ModelAdmin):
    list_chart_type = "bar"
    list_chart_data = {}
    list_chart_options = {"aspectRatio": 6}
    list_chart_config = None  # Override the combined settings

Or by using the class methods which gives you access to the queryset being used for the current view:

class MyModelAdmin(AdminChartMixin, admin.ModelAdmin):
    def get_list_chart_queryset(self, changelist):
        ...

    def get_list_chart_type(self, queryset):
        ...

    def get_list_chart_data(self, queryset):
        ...

    def get_list_chart_options(self, queryset):
        ...

    def get_list_chart_config(self, queryset):
        ...

The type, data, and options are passed directly to Chart.js to render the chart. Look at the Chart.js docs to see what kinds of settings can be used.

By default, the objects in your chart will be the objects that are currently visible in your list view. This means that admin controls like search and list filter will update your chart, and you can use the Django pagination settings to control how many objects you want in your chart at a time. To ignore pagination but still respect search/filter, you can override the get_list_chart_queryset method to return the full queryset:

class MyModelAdmin(AdminChartMixin, admin.ModelAdmin):
    def get_list_chart_queryset(self, changelist):
        return changelist.queryset

And if you want, you can also sidestep the list queryset entirely by using overriding get_list_chart_queryset with your own query:

class MyModelAdmin(AdminChartMixin, admin.ModelAdmin):
    def get_list_chart_queryset(self, changelist):
        return MyModel.objects.all()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-admincharts-0.4.1.tar.gz (73.6 kB view details)

Uploaded Source

Built Distribution

django_admincharts-0.4.1-py3-none-any.whl (73.9 kB view details)

Uploaded Python 3

File details

Details for the file django-admincharts-0.4.1.tar.gz.

File metadata

  • Download URL: django-admincharts-0.4.1.tar.gz
  • Upload date:
  • Size: 73.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.15.0-1014-azure

File hashes

Hashes for django-admincharts-0.4.1.tar.gz
Algorithm Hash digest
SHA256 27b9d00be1df4ef47c28b514a7ad705094b29d9017e3cf847baf261ab54081eb
MD5 b125aca637dddffaecd63284c704374c
BLAKE2b-256 14d17f4bafc466cf0a5989c407b331064d8e74701ae238221429fe440e9dfb22

See more details on using hashes here.

File details

Details for the file django_admincharts-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: django_admincharts-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 73.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.15.0-1014-azure

File hashes

Hashes for django_admincharts-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 79cdd184eae4ebb3f1be0e009a69cb8f70345c9b02a5beffacb167cb760178a4
MD5 9f19c34f9f99160460b751dd64f4fad8
BLAKE2b-256 1bbfb1b167d9cde7c053429cee7b590db0b24bcb52407950353d9f16e5d2754f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page