From d53404b0b153941ae16d7be56c98e91294e6899a Mon Sep 17 00:00:00 2001 From: Theofilis George-Nektarios Date: Wed, 27 May 2015 16:56:59 +0300 Subject: [PATCH] MongoDB NotSupportedError I Propose this fix for MongoDB NotSupported error on distinct queries. --- 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 9a84efa23..3d189915e 100644 --- a/rest_framework/filters.py +++ b/rest_framework/filters.py @@ -12,6 +12,9 @@ from rest_framework.settings import api_settings from functools import reduce import operator +from django.conf import settings +engine = settings.DATABASES['default']['ENGINE'] + FilterSet = django_filters and django_filters.FilterSet or None @@ -104,7 +107,11 @@ class SearchFilter(BaseFilterBackend): for search_term in self.get_search_terms(request): or_queries = [models.Q(**{orm_lookup: search_term}) for orm_lookup in orm_lookups] - queryset = queryset.filter(reduce(operator.or_, or_queries)).distinct() + if engine == 'django_mongodb_engine': + queryset = queryset.filter(reduce(operator.or_, or_queries)) + else: + queryset = queryset.filter(reduce(operator.or_, or_queries)).distinct() + return queryset