mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-03 12:00:12 +03:00
allow search only for valid search fields registered in the view
This commit is contained in:
parent
80320d015d
commit
4af00465b2
|
@ -331,11 +331,17 @@ class DjangoObjectPermissionsFilter(BaseFilterBackend):
|
||||||
return params
|
return params
|
||||||
|
|
||||||
def filter_queryset(self, request, queryset, view):
|
def filter_queryset(self, request, queryset, view):
|
||||||
|
|
||||||
|
valid_fields = getattr(view, 'search_fields', [])
|
||||||
search_terms = self.get_search_terms(request)
|
search_terms = self.get_search_terms(request)
|
||||||
|
|
||||||
if not search_terms:
|
if not search_terms or not allowed_search_fields:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
if valid_fields != '__all__':
|
||||||
|
search_terms = [search_term for search_term in search_terms if
|
||||||
|
search_term[0] in valid_fields]
|
||||||
|
|
||||||
orm_lookups = [
|
orm_lookups = [
|
||||||
self.construct_search(six.text_type(search_term[0]))
|
self.construct_search(six.text_type(search_term[0]))
|
||||||
for search_term in search_terms
|
for search_term in search_terms
|
||||||
|
|
Loading…
Reference in New Issue
Block a user