/ / Filtrando a estrutura REST do Django usando o operador IN - django, django-rest-framework

Filtrando a estrutura REST do Django usando o operador IN - django, django-rest-framework

Eu basicamente preciso de algo como /?status=[active,processed] ou /?status=active,processed

Minha configuração atual é: "DEFAULT_FILTER_BACKENDS": ("rest_framework.filters.DjangoFilterBackend",) e está filtrando apenas um valor corretamente (/?status=active)

Qualquer ajuda seria apreciada.

Respostas:

2 para resposta № 1

Eu acho que não há funcionalidade embutida para isso. Mas você pode implementar um filtro personalizado para fazer isso. Este filtro personalizado que você pode usar no seu conjunto de filtros.

import django_filters as df

class InListFilter(df.Filter):
"""
Expects a comma separated list
filters values in list
"""
def filter(self, qs, value):
if value:
return qs.filter(**{self.name+"__in": value.split(",")})
return qs

class MyFilterSet(df.FilterSet):
status = InListFilter(name="status")