From 4edb973418b6f5be42c258116eef37124c80e9c8 Mon Sep 17 00:00:00 2001 From: Dominik Kozaczko Date: Wed, 17 Jul 2013 09:32:00 +0200 Subject: [PATCH] support filter_fields - adds compatibility with other filters --- rest_framework/filters.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rest_framework/filters.py b/rest_framework/filters.py index 201aefd7e..74f26a030 100644 --- a/rest_framework/filters.py +++ b/rest_framework/filters.py @@ -28,9 +28,16 @@ class SimpleDjangoFilterBackend(BaseFilterBackend): Really simple class that allows straightforward Django ORM filtering. """ def filter_queryset(self, request, queryset, view): + filter_fields = getattr('filter_fields', view, 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.keys()] params = {} for k, v in request.QUERY_PARAMS.iteritems(): - params.update({k:v[0]}) + # if entry point matches, collect the original key + if k.split('__')[0] in fields: + params.update({k: v[0]}) return queryset.filter(**params)