django-filter-groups

django-filter-groups


License
BSD-3-Clause
Install
pip install django-filter-groups==0.4.3

Documentation

django filter groups

This package groups filters generated by django-filter.

The main reason to use it - don't show all filters (show only selected filters)

how to use

pip install django-filter-groups

add to your INSTALLED_APPS after django-filter

INSTALLED_APPS = [
  ...
  "django_filters",
  "django_filters_groups",
  ...
]

use it in your template:

  • add {% add_select_filter_form_to_context %} to the top of your template. It allows you to place {{ select_filter_form.media }} anywhere you want
  • add {% filters_by_groups %}
  • add {{ select_filter_form.media }}

If FilterSet name is not 'filter' -> add filterset to both tags
{% add_select_filter_form_to_context my_custom_filterset %}
{% filters_by_groups my_custom_filterset %} or filterset name {% filters_by_groups "my_custom_filterset" %} {% add_select_filter_form_to_context "my_custom_filterset" %}

warning

It's necessary to add values to exact and iexact VERBOSE_LOOKUPS.

Filter choice will be empty if they won't be presented

default settings

# django settings
FILTERS_GROUPS_SELECT_FILTER_FORM_LABEL = "Select a label"
// static/django_filters_groups/filter-defaults.js
let filterDefaults = {
  filterWrapperSelector: "p", // p is necessary when you use {{ form.as_p }}
  submitOnFilterDelete: false,
};

change group name

You can set group name directly in 2 ways:

  • add filter_group_label to your custom filter
class FFieldCountFilter(django_filters.NumberFilter):
    filter_group_label = "custom_group_label"
  • use get_filter_class_with_custom_label
from django_filters_groups.utils import get_filter_class_with_group_label

class MyFilterSet(django_filters.FilterSet):
  custom_filter = get_filter_class_with_group_label(django_filters.NumberFilter, "hello1111")(label="1123")