Skip to main content

A Django app to add a Multiple Choice List Filter to the admin interface.

Project description

========================================
Django Admin Multiple Choice List Filter
========================================

The SimpleListFilter that ships with Django only allows you to filter on one
option at a time. MultipleChoiceListFilter extends SimpleListFilter to allow you
to filter on multiple options.

Getting started
---------------

Install via pip::

pip install django-admin-multiple-choice-list-filter

Add to INSTALLED_APPS in settings.py::

# project/settings.py

INSTALLED_APPS = [
...
'django_admin_multiple_choice_list_filter',
]

As an example, let's say you had a ``shop`` app. In that app you have an ``Order`` model with a ``status`` field that has limited choices::

# shop/models.py

from django.db import models


class Statuses(object):
RECEIVED, PROCESSING, SHIPPED, CLOSED = range(0, 4)

CHOICES = (
(RECEIVED, 'Received'),
(PROCESSING, 'Processing'),
(SHIPPED, 'Shipped'),
(CLOSED, 'Closed'),
)


class Order(models.Model):
status = models.IntegerField(
choices=Statuses.CHOICES,
default=Statuses.RECEIVED,
)

Then, in your app's admin.py::

# shop/admin.py

from django.contrib import admin

from django_admin_multiple_choice_list_filter.list_filters import MultipleChoiceListFilter

from .models import Order, Statuses


class StatusListFilter(MultipleChoiceListFilter):
title = 'Status'
parameter_name = 'status__in'

def lookups(self, request, model_admin):
return Statuses.CHOICES


class OrderAdmin(admin.ModelAdmin):
list_display = ('status',)
list_filter = (StatusListFilter,)

admin.site.register(Order, OrderAdmin)

Your admin area will now display the MultipleChoiceListFilter. It looks a lot like the
SimpleListFilter, except there is now an additional link next to each choice. Use these
links to include or exclude the choice from the results. You can mix and match any
combination you like.

.. image:: https://raw.githubusercontent.com/ctxis/django-admin-multiple-choice-list-filter/master/django-admin-multiple-choice-list-filter.png

You can override the default template in one of two ways.

1. Override the template: https://docs.djangoproject.com/en/2.0/howto/overriding-templates/.
The default template location is ``django_admin_multiple_choice_list_filter/filter.html``
2. Set the template name in your subclass of MultipleChoiceListFilter, e.g.::

# shop/admin.py
...

class StatusListFilter(MultipleChoiceListFilter):
template = 'path/to/your/template.html'
...


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

Built Distribution

File details

Details for the file django-admin-multiple-choice-list-filter-0.1.1.tar.gz.

File metadata

File hashes

Hashes for django-admin-multiple-choice-list-filter-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a5b82682ff752cf74bbc4fa3d562c99b9f9f80389961017e1ac63e08f22d8b9f
MD5 c135652968a6cc18b78833e5961ee423
BLAKE2b-256 865259664dade0552d6e2c76b5b1e94ea73b5390e8c4dcdf14d368f805a28ee4

See more details on using hashes here.

File details

Details for the file django_admin_multiple_choice_list_filter-0.1.1-py2-none-any.whl.

File metadata

File hashes

Hashes for django_admin_multiple_choice_list_filter-0.1.1-py2-none-any.whl
Algorithm Hash digest
SHA256 eab2ad5fad6df8ed8436cb6c1d0e67863453a9d30282b7fdcb7e45b2eb37ab6f
MD5 6cd597e8d30eac893308031ee7b5e4a6
BLAKE2b-256 99afa15bb1c2ab4314f7c1cb4b65f1f9713370205bc0bede9fa14818681eb1df

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