Skip to main content
## About ##
This Django app makes it easier to create custom filters in the change list of
Django Admin and supplies a `TreeFilter` and a `DateRangeFilter` too. Se below.

Tested on Django 1.2.3 and from @15ea9a9 1.3.1.

## Updating to 1.3 support ##
I will write proper docs, things are getting messy here, but here is the
lowdown.

### New settings required ###
As I found out, you can't reliably convert the django date formats to
Datepicker formats. So this commit introduces these two new settings:

FILTRATE = {
# See http://jqueryui.com/demos/datepicker/#localization.
'datepicker_region': 'en-GB',
# See http://docs.jquery.com/UI/Datepicker/formatDate.
'datepicker_date_format': 'yy-mm-dd',
}

So if the above defaults does not suit you, you have to change them your self.
Check out the Datepicker documentation to see how to use them.

### lookup_allowed() ###
Django 1.2.4 introduces restrictions on which lookups that can be queried
in the url, so at the moment the end user are responsible for
checking for those, as in this example:

class CaseAdmin(admin.ModelAdmin):
list_filter = ['client']

def lookup_allowed(self, key, *args, **kwargs):
if 'client__start_date' in key:
return True
else:
return super(CaseAdmin, self).lookup_allowed(key, *args, **kwargs)

### Undefined Media() class bug ###
Time and my Python meta-fu is running out, and I couldn't fix it
so its not neccessary to define an empty Media() class as in:

class CaseAdmin(admin.ModelAdmin):
class Media():
pass

## The FiltrateFilter ##
The base class that adds support for custom html in the content of the filter
and for using `Media()` classes.

## TreeFilter ##
A recursive tree filter using the excellent library http://www.jstree.com/.

### Example ###
```python
# The Filter.
from filtrate.filters import TreeFilter
from itertools import groupby
class CompanyDepartmentFilter(TreeFilter):
field_name = "client__department__id__in"

def get_title(self):
return 'By Department'

def get_tree(self):
from company.models import Department
qs = Department.objects.all().order_by('company_order', 'company')
return groupby(qs, lambda obj: getattr(obj, 'company'))

# The model.
from filtrate import register_filter
class Case(Model):
...
register_filter(field_name, CompanyDepartmentFilter)
...
```

## DateRangeFilter ##
Filters results in a given date range using the jQueryUI datepicker plugin.

### Example ###
```python
# The Filter.
from filtrate.filters import DateRangeFilter

class CaseLicenseStartDateFilter(DateRangeFilter):
field_name = 'caselicense__start_date'

def get_title(self):
return "By license start date"

# The model.
from filtrate import register_filter
class Case(Model):
...
register_filter(field_name, CaseLicenseStartDateFilter)
...
```

## Installation ##

* Clone the repo and symlink or copy the "filtrate" folder to your apps folder.
* Add `filtrate` to your installed apps.
* Add the "filtrate/templates" folder to your template folders.

### Static files ###

FlexSelect requires "django.contrib.staticfiles" installed to work out of the
box. If it is not then the js and css files must be installed manually.
Read more about "django.contrib.staticfiles" at
https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/.

Metadata

Release files for django-admin-filtrate 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-admin-filtrate 0.1.0
File Size Uploaded
django-admin-filtrate-0.1.0.tar.gz 220.9 kB Details

Release files / django-admin-filtrate-0.1.0.tar.gz

Download URL django-admin-filtrate-0.1.0.tar.gz
Size 220.9 kB
Tags Source
SHA-256 checksum
How to use checksums
22ad751771c2877dc1a57fd01d56ee108a8ec88f21ed0369153669b02dfe3b48
BLAKE2b-256 checksum
How to use checksums
52775872864be981e27e9879e5ed670c898f4b6a5a7c31174a4e893def15dbb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page