Fixes: CaseInsensitiveListFilter

This commit is contained in:
Egor Pavlovich Gorbunov 2025-06-16 09:07:31 +03:00
parent 12971e88e1
commit 1134fdf90a

View file

@ -24,13 +24,22 @@ logger = logging.getLogger(__name__)
class CaseInsensitiveListFilter(BaseInFilter, CharFilter):
def filter(self, qs, value):
if value:
lookup = f"{self.field_name}__icontains"
q_objects = Q()
for v in value:
q_objects |= Q(**{lookup: v})
qs = qs.filter(q_objects)
return qs
if not value:
return qs
if isinstance(value, str):
values = [v.strip() for v in value.split(',') if v.strip()]
else:
values = [v for v in value if v]
if not values:
return qs
q = Q()
for v in values:
q |= Q(**{f"{self.field_name}__iexact": v})
return qs.filter(q).distinct()
class ProductFilter(FilterSet):