Fixes: CaseInsensitiveListFilter
This commit is contained in:
parent
12971e88e1
commit
1134fdf90a
1 changed files with 16 additions and 7 deletions
|
|
@ -24,14 +24,23 @@ 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)
|
||||
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):
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||
|
|
|
|||
Loading…
Reference in a new issue