Merge pull request #566 from carltongibson/docs/filter_overrides
Update docs on `filter_overrides` usage
This commit is contained in:
commit
98ce30b52c
8
Makefile
8
Makefile
|
@ -1,7 +1,11 @@
|
|||
.PHONY: deps, test
|
||||
.PHONY: deps, test, clean
|
||||
|
||||
deps:
|
||||
pip install -r ./requirements/test.txt
|
||||
|
||||
test:
|
||||
./runtests.py
|
||||
./runtests.py
|
||||
|
||||
clean:
|
||||
rm -r build dist django_filter.egg-info
|
||||
|
||||
|
|
|
@ -70,5 +70,5 @@ Support
|
|||
If you have questions about usage or development you can join the
|
||||
`mailing list`_.
|
||||
|
||||
.. _`read the docs`: https://django-filter.readthedocs.io/en/latest/
|
||||
.. _`read the docs`: https://django-filter.readthedocs.io/en/develop/
|
||||
.. _`mailing list`: http://groups.google.com/group/django-filter
|
||||
|
|
|
@ -327,8 +327,8 @@ class BaseFilterSet(object):
|
|||
|
||||
assert filter_class is not None, (
|
||||
"%s resolved field '%s' with '%s' lookup to an unrecognized field "
|
||||
"type %s. Try adding an override to 'filter_overrides'. See: "
|
||||
"https://django-filter.readthedocs.io/en/latest/usage.html#overriding-default-filters"
|
||||
"type %s. Try adding an override to 'Meta.filter_overrides'. See: "
|
||||
"https://django-filter.readthedocs.io/en/develop/ref/filterset.html#customise-filter-generation-with-filter-overrides"
|
||||
) % (cls.__name__, name, lookup_expr, f.__class__.__name__)
|
||||
|
||||
return filter_class(**default)
|
||||
|
|
|
@ -22,7 +22,7 @@ from .exceptions import FieldLookupError
|
|||
|
||||
def deprecate(msg, level_modifier=0):
|
||||
warnings.warn(
|
||||
"%s See: https://django-filter.readthedocs.io/en/latest/migration.html" % msg,
|
||||
"%s See: https://django-filter.readthedocs.io/en/develop/migration.html" % msg,
|
||||
DeprecationWarning, stacklevel=3 + level_modifier)
|
||||
|
||||
|
||||
|
|
|
@ -135,23 +135,9 @@ Overriding default filters
|
|||
|
||||
Like ``django.contrib.admin.ModelAdmin``, it is possible to override
|
||||
default filters for all the models fields of the same kind using
|
||||
``filter_overrides``::
|
||||
``filter_overrides`` on the ``Meta`` class::
|
||||
|
||||
class ProductFilter(django_filters.FilterSet):
|
||||
filter_overrides = {
|
||||
models.CharField: {
|
||||
'filter_class': django_filters.CharFilter,
|
||||
'extra': lambda f: {
|
||||
'lookup_expr': 'icontains',
|
||||
},
|
||||
},
|
||||
models.BooleanField: {
|
||||
'filter_class': django_filters.BooleanFilter,
|
||||
'extra': lambda f: {
|
||||
'widget': forms.CheckboxInput,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
class Meta:
|
||||
model = Product
|
||||
|
@ -159,6 +145,20 @@ default filters for all the models fields of the same kind using
|
|||
'name': ['exact'],
|
||||
'release_date': ['isnull'],
|
||||
}
|
||||
filter_overrides = {
|
||||
models.CharField: {
|
||||
'filter_class': django_filters.CharFilter,
|
||||
'extra': lambda f: {
|
||||
'lookup_expr': 'icontains',
|
||||
},
|
||||
},
|
||||
models.BooleanField: {
|
||||
'filter_class': django_filters.BooleanFilter,
|
||||
'extra': lambda f: {
|
||||
'widget': forms.CheckboxInput,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Request-based filtering
|
||||
|
|
|
@ -12,7 +12,7 @@ Meta options
|
|||
- :ref:`exclude <exclude>`
|
||||
- :ref:`form <form>`
|
||||
- :ref:`together <together>`
|
||||
- filter_overrides
|
||||
- :ref:`filter_overrides <filter_overrides>`
|
||||
- :ref:`strict <strict>`
|
||||
|
||||
|
||||
|
@ -120,6 +120,36 @@ field set must either be all or none present in the request for
|
|||
fields = ['price', 'release_date', 'rating']
|
||||
together = ['rating', 'price']
|
||||
|
||||
|
||||
.. _filter_overrides:
|
||||
|
||||
Customise filter generation with ``filter_overrides``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The inner ``Meta`` class also takes an optional ``filter_overrides`` argument.
|
||||
This is a map of model fields to filter classes with options::
|
||||
|
||||
class ProductFilter(django_filters.FilterSet):
|
||||
|
||||
class Meta:
|
||||
model = Product
|
||||
fields = ['name', 'release_date']
|
||||
filter_overrides = {
|
||||
models.CharField: {
|
||||
'filter_class': django_filters.CharFilter,
|
||||
'extra': lambda f: {
|
||||
'lookup_expr': 'icontains',
|
||||
},
|
||||
},
|
||||
models.BooleanField: {
|
||||
'filter_class': django_filters.BooleanFilter,
|
||||
'extra': lambda f: {
|
||||
'widget': forms.CheckboxInput,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
.. _strict:
|
||||
|
||||
``strict``
|
||||
|
|
Loading…
Reference in New Issue