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):
|
||||
return ''
|
||||
|
||||
term = self.get_search_terms(request)
|
||||
term = term[0] if term else ''
|
||||
context = {
|
||||
'param': self.search_param,
|
||||
'term': term
|
||||
'term': request.query_params.get(self.search_param, ''),
|
||||
}
|
||||
template = loader.get_template(self.template)
|
||||
return template.render(context)
|
||||
|
|
|
@ -225,6 +225,23 @@ class SearchFilterTests(TestCase):
|
|||
{'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):
|
||||
label = models.CharField(max_length=32)
|
||||
|
|
Loading…
Reference in New Issue
Block a user