mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-01-24 00:04:16 +03:00
Fix SearchFilter renders field with invalid value (#9023)
Co-authored-by: Andrii Tarasenko <andrii.tarasenko@py-t.com>
This commit is contained in:
parent
8dd4250d02
commit
4f7e9ed3bb
|
@ -139,11 +139,9 @@ class SearchFilter(BaseFilterBackend):
|
||||||
if not getattr(view, 'search_fields', None):
|
if not getattr(view, 'search_fields', None):
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
term = self.get_search_terms(request)
|
|
||||||
term = term[0] if term else ''
|
|
||||||
context = {
|
context = {
|
||||||
'param': self.search_param,
|
'param': self.search_param,
|
||||||
'term': term
|
'term': request.query_params.get(self.search_param, ''),
|
||||||
}
|
}
|
||||||
template = loader.get_template(self.template)
|
template = loader.get_template(self.template)
|
||||||
return template.render(context)
|
return template.render(context)
|
||||||
|
|
|
@ -225,6 +225,23 @@ class SearchFilterTests(TestCase):
|
||||||
{'id': 2, 'title': 'zz', 'text': 'bcd'},
|
{'id': 2, 'title': 'zz', 'text': 'bcd'},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def test_search_field_with_multiple_words(self):
|
||||||
|
class SearchListView(generics.ListAPIView):
|
||||||
|
queryset = SearchFilterModel.objects.all()
|
||||||
|
serializer_class = SearchFilterSerializer
|
||||||
|
filter_backends = (filters.SearchFilter,)
|
||||||
|
search_fields = ('title', 'text')
|
||||||
|
|
||||||
|
search_query = 'foo bar,baz'
|
||||||
|
view = SearchListView()
|
||||||
|
request = factory.get('/', {'search': search_query})
|
||||||
|
request = view.initialize_request(request)
|
||||||
|
|
||||||
|
rendered_search_field = filters.SearchFilter().to_html(
|
||||||
|
request=request, queryset=view.queryset, view=view
|
||||||
|
)
|
||||||
|
assert search_query in rendered_search_field
|
||||||
|
|
||||||
|
|
||||||
class AttributeModel(models.Model):
|
class AttributeModel(models.Model):
|
||||||
label = models.CharField(max_length=32)
|
label = models.CharField(max_length=32)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user