Как отфильтровать одно поле, используя несколько значений в ListAPIView? - PullRequest
1 голос
/ 26 февраля 2020

Как отфильтровать одно поле, используя несколько значений в ListAPIView?

URL: /api/items/?status=active&status=pending

Мне нужно получить результаты, которые имеют активные и ожидающие положение дел. Что filter_backends будет хорошо для моего случая?

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Да, вы можете использовать DjangoDefaultFilterBackend так:

from django_filters import DjangoFilterBackend

class profile_view(generics.ListAPIView):
    queryset = ModelName.objects.all()
    serializer_class = SerializerName
    filter_backends = [DjangoFilterBackend]
    filter_fields = {
        'status': ["in", "exact"] # icontains ,exact, gte, lte, in
         # if you want to add more field you can add
    }

, тогда вы можете фильтровать данные по ?status__in=active, pending или status=active.

1 голос
/ 26 февраля 2020

Да, вы можете использовать DjangoDefaultFilterBackend следующим образом:

from django_filters import DjangoFilterBackend
class YourListAPI(generics.ListAPIView):
    queryset = YourModel.objects.all()
    serializer_class = YourSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['status']

Вы можете найти более подробную информацию о drf-filtering

Если вы хотите использовать фильтр нескольких значений для того же поля есть хороший ответ здесь

...