Это объясняется в документации по django-фильтрам :
Это базовый класс, используемый для создания фильтров поиска IN. Ожидается, что этот класс фильтра используется вместе с другим классом фильтра, так как этот класс только проверяет, что входящее значение разделено запятыми. Вторичный фильтр затем используется для проверки отдельных значений.
Таким образом, вы должны определить класс фильтра:
# filters.py
class NumberInFilter(BaseInFilter, NumberFilter):
pass
class ReportFilter(FilterSet):
user = NumberInFilter(field_name='user', lookup_expr='in')
class Meta:
model = Delivery
# You should put here your existing filters
fields = {
'too': ['lte'],
'fromm': ['gte'],
'electric_bike': ['exact'],
'mode': ['exact'],
}
И затем использовать его в своем наборе представлений:
# views.py
class ReportView(generics.ListCreateAPIView):
queryset = Delivery.objects.all()
serializer_class = serializers.DeliverySerializer
filter_backends = [DjangoFilterBackend]
filterset_class = ReportFilter
Класс фильтра более гибок, поскольку вы можете реализовать более продвинутую логику и поведение.