/ / Filtering Django REST-Framework mit IN-Operator - Django, Django-Rest-Framework

Filterung des Django-REST-Frameworks unter Verwendung des IN-Operators - django, django-rest-framework

Ich brauche im Grunde etwas wie /?status=[active,processed] oder /?status=active,processed

Meine aktuelle Einstellung ist: "DEFAULT_FILTER_BACKENDS": ("rest_framework.filters.DjangoFilterBackend",) und es wird nur ein Wert korrekt gefiltert (/?status=active)

Jede Hilfe wäre willkommen.

Antworten:

2 für die Antwort № 1

Ich denke, es gibt keine eingebaute Funktionalität dafür. Aber Sie können einen benutzerdefinierten Filter implementieren, um dies zu tun. Dieser benutzerdefinierte Filter, den Sie in Ihrem Filterset verwenden können.

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