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'
...
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
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
Built Distribution
File details
Details for the file django-admin-multiple-choice-list-filter-0.1.1.tar.gz
.
File metadata
- Download URL: django-admin-multiple-choice-list-filter-0.1.1.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5b82682ff752cf74bbc4fa3d562c99b9f9f80389961017e1ac63e08f22d8b9f |
|
MD5 | c135652968a6cc18b78833e5961ee423 |
|
BLAKE2b-256 | 865259664dade0552d6e2c76b5b1e94ea73b5390e8c4dcdf14d368f805a28ee4 |
File details
Details for the file django_admin_multiple_choice_list_filter-0.1.1-py2-none-any.whl
.
File metadata
- Download URL: django_admin_multiple_choice_list_filter-0.1.1-py2-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eab2ad5fad6df8ed8436cb6c1d0e67863453a9d30282b7fdcb7e45b2eb37ab6f |
|
MD5 | 6cd597e8d30eac893308031ee7b5e4a6 |
|
BLAKE2b-256 | 99afa15bb1c2ab4314f7c1cb4b65f1f9713370205bc0bede9fa14818681eb1df |