  import operator
  import warnings
  from functools import reduce
  
  from django.core.exceptions import ImproperlyConfigured
  from django.db import models
  from django.db.models.constants import LOOKUP_SEP
  from django.template import loader
  from django.utils.encoding import force_str
  from django.utils.translation import gettext_lazy as _
 
</s> remove     def setUp(self):
 </s> add     @classmethod
    def setUpTestData(cls): </s> remove         and may be comma and/or whitespace delimited.
 </s> add         and may be whitespace delimited.
from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured
  import operator
  import warnings
  from functools import reduce
  
from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured
  from django.db import models
  from django.db.models.constants import LOOKUP_SEP
  from django.template import loader
  from django.utils.encoding import force_str
  from django.utils.translation import gettext_lazy as _
keep keep keep keep replace keep keep keep keep keep
 Align SearchFilter behaviour to django.contrib.admin search (#9017)

* Use subquery to remove duplicates in SearchFilter

* Align SearchFilter behaviour to django.contrib.admin

* Add compatibility with older django/python versions

* Allow search to split also by comma after smart split

* Use generator to build search conditions to reduce iterations

* Improve search documentation

* Update docs/api-guide/filtering.md

---------

Co-authored-by: Asif Saif Uddin <auvipy@gmail.com> 
rest_framework/filters.py