Skip to content

A Django app that lets you filter data by date range and numeric range in the admin UI

License

Notifications You must be signed in to change notification settings

silentsokolov/django-admin-rangefilter

Repository files navigation

https://github.com/silentsokolov/django-admin-rangefilter/workflows/build/badge.svg?branch=master

django-admin-rangefilter

A Django app that adds a filter by date range and numeric range to the admin UI.

https://raw.githubusercontent.com/silentsokolov/django-admin-rangefilter/master/docs/images/screenshot.png

Requirements

  • Python 3.6+
  • Django 1.11+

Installation

Use your favorite Python package manager to install the app from PyPI, e.g.

Example:

pip install django-admin-rangefilter

Add rangefilter to INSTALLED_APPS:

Example:

INSTALLED_APPS = (
    ...
    'rangefilter',
    ...
)

Example usage

In admin

from datetime import datetime

from django.contrib import admin
from rangefilter.filters import (
    DateRangeFilterBuilder,
    DateTimeRangeFilterBuilder,
    NumericRangeFilterBuilder,
    DateRangeQuickSelectListFilterBuilder,
)

from .models import Post


@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_filter = (
        ("created_at", DateRangeFilterBuilder()),
        (
            "updated_at",
            DateTimeRangeFilterBuilder(
                title="Custom title",
                default_start=datetime(2020, 1, 1),
                default_end=datetime(2030, 1, 1),
            ),
        ),
        ("num_value", NumericRangeFilterBuilder()),
        ("created_at", DateRangeQuickSelectListFilterBuilder()),  # Range + QuickSelect Filter
    )

Support Content-Security-Policy

For Django 1.8+, if django-csp is installed, nonces will be added to style and script tags.