From 1134fdf90ab48dbadb8cad09cc5bc9fb7036dfcd Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Mon, 16 Jun 2025 09:07:31 +0300 Subject: [PATCH] Fixes: CaseInsensitiveListFilter --- core/filters.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/core/filters.py b/core/filters.py index 286a6160..1fbacc51 100644 --- a/core/filters.py +++ b/core/filters.py @@ -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):