mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-10-31 16:07:38 +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