https://github.com/alex/django-filter/issues/137#issuecomment-77697870
【解决方案2】
from django_filters import Filter
from django_filters.fields import Lookup
from .models import Product
class ListFilter(Filter):
def filter(self, qs, value):
value_list = value.split(u',')
return super(ListFilter, self).filter(qs, Lookup(value_list, 'in'))
class ProductFilterSet(django_filters.FilterSet):
id = ListFilter(name='id')
class Meta:
model = Product
fields = ['id']
【解决方案3】
import django_filters
class NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter):
pass
class BookFilter(django_filters.FilterSet):
id__in = NumberInFilter(field_name="id", lookup_expr="in")
【解决方案4】
class BookFilter(django_filters.FilterSet):
id = django_filters.NumberFilter(name="id", lookup_type="in")
class Meta:
model = Book
fields = ['id']
【解决方案8】:
from django_filters import rest_framework as filters
class NumberInFilter(filters.BaseInFilter, filters.NumberFilter):
pass
class BookFilter(filters.FilterSet):
id_in = NumberInFilter(field_name='id', lookup_expr='in')
class Meta:
model = Book
fields = ['id_in', 'name']
class BookView(viewsets.ReadOnlyModelViewSet):
serializer_class = BookSerializer()
model = Book
filter_class = BookFilter
其他见