This commit is contained in:
Dominik Kozaczko 2017-04-15 22:18:38 +00:00 committed by GitHub
commit 68d5ba67c4

View File

@ -55,6 +55,24 @@ else:
assert False, 'django-filter must be installed to use the `FilterSet` class' assert False, 'django-filter must be installed to use the `FilterSet` class'
class SimpleDjangoFilterBackend(BaseFilterBackend):
"""
Really simple class that allows straightforward Django ORM filtering.
"""
def filter_queryset(self, request, queryset, view):
filter_fields = getattr(view, 'filter_fields', None)
if filter_fields is None:
filter_fields = request.QUERY_PARAMS.keys()
# reduce relations to entry point only
fields = [field.split('__')[0] for field in filter_fields]
params = {}
for k, v in request.QUERY_PARAMS.iteritems():
# if entry point matches, collect the original key
if k.split('__')[0] in fields:
params.update({k: v[0] if isinstance(v, list) else v})
return queryset.filter(**params)
class DjangoFilterBackend(BaseFilterBackend): class DjangoFilterBackend(BaseFilterBackend):
""" """
A filter backend that uses django-filter. A filter backend that uses django-filter.