/ / Filtrowanie frameworka REST Django za pomocą operatora IN - django, django-rest-framework

Filtrowanie struktury Django REST za pomocą operatora IN - django, django-rest-framework

Zasadniczo potrzebuję czegoś takiego /?status=[active,processed] lub /?status=active,processed

Moje obecne ustawienie to: "DEFAULT_FILTER_BACKENDS": ("rest_framework.filters.DjangoFilterBackend",) i poprawnie filtruje tylko jedną wartość (/?status=active)

Każda pomoc będzie doceniona.

Odpowiedzi:

2 dla odpowiedzi № 1

Myślę, że nie ma do tego wbudowanej funkcjonalności. Aby to zrobić, możesz jednak zaimplementować niestandardowy filtr. Tego niestandardowego filtra można użyć w zestawie filtrów.

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")