diff --git a/docs/plugins/development/filtersets.md b/docs/plugins/development/filtersets.md index a4b9e13752b..e829ddea554 100644 --- a/docs/plugins/development/filtersets.md +++ b/docs/plugins/development/filtersets.md @@ -55,6 +55,27 @@ class MyModelViewSet(...): filterset_class = filtersets.MyModelFilterSet ``` +### Implementing Quick Search + +The `ObjectListView` has a field called Quick Search. For Quick Search to work the corresponding FilterSet has to override the `search` method that is implemented in `NetBoxModelFilterSet`. This function takes a queryset and can perform arbitrary operations on it and return it. A common use-case is to search for the given search value in multiple fields: + +```python +from django.db.models import Q +from netbox.filtersets import NetBoxModelFilterSet + +class MyFilterSet(NetBoxModelFilterSet): + ... + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) + ) +``` + +The `search` method is also used by the `q` filter in `NetBoxModelFilterSet` which in turn is used by the Search field in the filters tab. + ## Filter Classes ### TagFilter