Commit 7813d2fb by tony

fix DISTINCT for Oracle databases

parent 6add1acc
...@@ -7,6 +7,7 @@ from __future__ import unicode_literals ...@@ -7,6 +7,7 @@ from __future__ import unicode_literals
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from django.db import models from django.db import models
from django.utils import six from django.utils import six
from django.conf import settings
from rest_framework.compat import django_filters, guardian, get_model_name from rest_framework.compat import django_filters, guardian, get_model_name
from rest_framework.settings import api_settings from rest_framework.settings import api_settings
from functools import reduce from functools import reduce
...@@ -104,7 +105,9 @@ class SearchFilter(BaseFilterBackend): ...@@ -104,7 +105,9 @@ class SearchFilter(BaseFilterBackend):
for search_term in self.get_search_terms(request): for search_term in self.get_search_terms(request):
or_queries = [models.Q(**{orm_lookup: search_term}) or_queries = [models.Q(**{orm_lookup: search_term})
for orm_lookup in orm_lookups] for orm_lookup in orm_lookups]
queryset = queryset.filter(reduce(operator.or_, or_queries)).distinct() queryset = queryset.filter(reduce(operator.or_, or_queries))
if settings.DATABASES[queryset.db]["ENGINE"] != "django.db.backends.oracle":
queryset = queryset.distinct()
return queryset return queryset
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment