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):
|
class CaseInsensitiveListFilter(BaseInFilter, CharFilter):
|
||||||
def filter(self, qs, value):
|
def filter(self, qs, value):
|
||||||
if value:
|
if not 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
|
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):
|
class ProductFilter(FilterSet):
|
||||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue