[Update] 添加ids filter

This commit is contained in:
ibuler
2020-04-13 10:40:13 +08:00
parent 42c5c02709
commit 0d2b4d7ca3
4 changed files with 25 additions and 7 deletions

View File

@@ -9,7 +9,7 @@ import logging
from common import const
__all__ = ["DatetimeRangeFilter", "IDSpmFilter", "CustomFilter"]
__all__ = ["DatetimeRangeFilter", "IDSpmFilter", 'IDInFilter', "CustomFilter"]
class DatetimeRangeFilter(filters.BaseFilterBackend):
@@ -68,6 +68,25 @@ class IDSpmFilter(filters.BaseFilterBackend):
return queryset
class IDInFilter(filters.BaseFilterBackend):
def get_schema_fields(self, view):
return [
coreapi.Field(
name='ids', location='query', required=False,
type='string', example='/api/v1/users/users?ids=1,2,3',
description='Filter by id set'
)
]
def filter_queryset(self, request, queryset, view):
ids = request.query_params.get('ids')
if not ids:
return queryset
id_list = [i.strip() for i in ids.split(',')]
queryset = queryset.filter(id__in=id_list)
return queryset
class CustomFilter(filters.BaseFilterBackend):
def get_schema_fields(self, view):

View File

@@ -9,7 +9,7 @@ from django.http import JsonResponse
from rest_framework.response import Response
from rest_framework.settings import api_settings
from common.drf.filters import IDSpmFilter, CustomFilter
from common.drf.filters import IDSpmFilter, CustomFilter, IDInFilter
from ..utils import lazyproperty
__all__ = [
@@ -49,7 +49,7 @@ class SerializerMixin:
class ExtraFilterFieldsMixin:
default_added_filters = [CustomFilter, IDSpmFilter]
default_added_filters = [CustomFilter, IDSpmFilter, IDInFilter]
filter_backends = api_settings.DEFAULT_FILTER_BACKENDS
extra_filter_fields = []
extra_filter_backends = []